Oralce與MySQL在操作上有很大區(qū)別,比如:
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、衡陽縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為衡陽縣等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Oralce字段使用關(guān)鍵字時(shí)需要加引號(hào)寫到SQL中,如:user,order,size等。
Oralce沒有l(wèi)imit而需要用numrow記錄序號(hào),如提取第三條后四數(shù)據(jù):numrow>=3 and numrow<8
數(shù)據(jù)類型
Oralce沒有auto_imcrement自增主鍵而需要使用序列等方式替代(SEQUENCE)
取最后插入主鍵,Oralce需要特殊處理,如查序列currval值
Oralce寫超過4000字節(jié)數(shù)據(jù)需要特殊處理。
在這里說明自增主鍵和超過4000字節(jié)長數(shù)據(jù)。
使用序列自增
那么每個(gè)表都需要?jiǎng)?chuàng)建一個(gè)獨(dú)立的序列,創(chuàng)建語句是:
CREATE SEQUENCE sequence //創(chuàng)建序列名稱 [INCREMENT BY n] //遞增的序列值是n 如果n是正數(shù)就遞增,如果是負(fù)數(shù)就遞減 默認(rèn)是1 [START WITH n] //開始的值,遞增默認(rèn)是minvalue 遞減是maxvalue [{MAXVALUE n | NOMAXVALUE}] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //循環(huán)/不循環(huán) [{CACHE n | NOCACHE}];//分配并存入到內(nèi)存中
如:
CREATE SEQUENCE sq_name INCREMENT BY 1 -- 每次加幾個(gè) START WITH 1 -- 從1開始計(jì)數(shù) NOMAXVALUE -- 不設(shè)置最大值 NOCYCLE -- 一直累加,不循環(huán) CACHE 10;
每個(gè)序列包含:
NEXTVAL 返回序列中下一個(gè)有效的值,任何用戶都可以引用,插入時(shí)當(dāng)主鍵值使用
CURRVAL 中存放序列的當(dāng)前值,取最后插入主鍵ID時(shí)使用
插入數(shù)據(jù)時(shí)使用: sq_name.nextval 作為主鍵值(注意不能加引號(hào))
如:
insert into table_name(id,name)value(sq_name.nextval,"OK");
取出最近插入主鍵則需要使用SQL查詢:
SELECT sq_name.currval currval FROM dual
插入超長內(nèi)容
oralce官方文檔說明:http://www.oracle.com/technetwork/articles/fuecks-lobs-095315.html
使用oci函數(shù)處理:
//說明 empty_clob() 是創(chuàng)建一個(gè)空的clob如果是blob則使用empty_blob。 //需要增加 RETURNING語句來綁定空clob并指定占位符。 //插入與修改類似 $sql = "UPDATE mylobs SET mylob = EMPTY_CLOB() WHERE id = 2403 RETURNING mylob INTO :mylob"; $stmt = oci_parse($conn, $sql); //創(chuàng)建新的空 LOB 或 FILE 描述符,生成一個(gè)OCI-Lob對(duì)象,注意使用這個(gè)寫文本實(shí)際是SQL先執(zhí)行后回填內(nèi)容,所以不能自動(dòng)提交 $mylob = oci_new_descriptor($conn,OCI_D_LOB); //綁定占位符數(shù)據(jù),注意最后一個(gè)參數(shù)一定要與字段數(shù)據(jù)類型一樣。 oci_bind_by_name($stmt,':mylob',$mylob, -1, OCI_B_CLOB); //執(zhí)行預(yù)處理SQL,注意不能自動(dòng)提交需要一定要增加第二個(gè)參數(shù),否則長文本無法寫入。 oci_execute($stmt, OCI_DEFAULT) or die ("Unable to execute query\n"); //給OCI-Lob對(duì)象保存長文本內(nèi)容,注意這里傳入的參數(shù)將全部寫入點(diǎn)位符中。 if ( !$mylob->save( 'UPDATE: '.date('H:i:s',time()) ) ) { //保存失敗回滾 oci_rollback($conn); die("Unable to update lob\n"); } //保存成功提交 oci_commit();
說明:如果使用oci函數(shù)在使用點(diǎn)位符時(shí)需要嚴(yán)格按數(shù)據(jù)類型走,否則會(huì)出錯(cuò),所以使用oci_bind_by_name的方式時(shí)需要格外注意每個(gè)字段的數(shù)據(jù)類型是否匹配。
使用PDO處理:
//鏈接數(shù)據(jù)庫 $pod=new PDO('oci:dbname=test;charset=utf8','system','admin123456'); //預(yù)處理SQL $sth=$pod->prepare("INSERT INTO mylobs (id, mylob) VALUES (tslbh_xk.nextval, ?)"); //要寫入的clob越長內(nèi)容 $val='INSERT:test contents'; //綁定參數(shù),注意當(dāng)是lob類型時(shí)需要指定數(shù)據(jù)長度,否則會(huì)報(bào)錯(cuò)類型不對(duì) $sth->bindParam(1, $val, PDO::PARAM_STR,strlen($val)); //執(zhí)行SQL $sth->execute() or die ("Unable to execute query\n");
說明:使用PDO的占位符也是需要指定數(shù)據(jù)類型,默認(rèn)是PDO::PARAM_STR,包含execute函數(shù)。
最后因能力有限如果文本有錯(cuò)還請(qǐng)指出!
網(wǎng)站標(biāo)題:php操作Oralce
網(wǎng)址分享:http://jinyejixie.com/article42/gggeec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、域名注冊(cè)、響應(yīng)式網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、定制開發(fā)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)