windows和Linux都能執(zhí)行
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、海口網(wǎng)站維護(hù)、網(wǎng)站推廣。
Oracle Call Interface(OCI)使用戶可以訪問(wèn) Oracle 10,Oracle9,Oracle8 和 Oracle7 數(shù)據(jù)庫(kù)。支持將 PHP 變量與 Oracle 占位符(placeholder)綁定,具有完整的 LOB,F(xiàn)ILE 和 ROWID 支持,以及允許使用用戶提供的定義變量。
例子 1. 基本查詢
?php
$conn = oci_connect('hr', 'hr', 'orcl');
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}
$query = 'SELECT * FROM DEPARTMENTS';
$stid = oci_parse($conn, $query);
if (!$stid) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r = oci_execute($stid, OCI_DEFAULT);
if(!$r) {
$e = oci_error($stid);
echo htmlentities($e['message']);
exit;
}
print 'table border="1"';
while($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
print 'tr';
foreach($row as $item) {
print 'td'.($item?htmlentities($item):'?').'/td';
}
print '/tr';
}
print '/table';
oci_close($conn);
?
例子 2. 用綁定變量插入
?php
// Before running, create the table:
// CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));
$conn = oci_connect('scott', 'tiger', 'orcl');
$query = 'INSERT INTO MYTABLE VALUES(:myid, :mydata)';
$stid = oci_parse($conn, $query);
$id = 60;
$data = 'Some data';
oci_bind_by_name($stid, ':myid', $id);
oci_bind_by_name($stid, ':mydata', $data);
$r = oci_execute($stid);
if($r)
print "One row inserted";
oci_close($conn);
?
例子 3. 將數(shù)據(jù)插入到 CLOB 列中
?php
// Before running, create the table:
// CREATE TABLE MYTABLE (mykey NUMBER, myclob CLOB);
$conn = oci_connect('scott', 'tiger', 'orcl');
$mykey = 12343; // arbitrary key for this example;
$sql = "INSERT INTO mytable (mykey, myclob)
VALUES (:mykey, EMPTY_CLOB())
RETURNING myclob INTO :myclob";
$stid = oci_parse($conn, $sql);
$clob = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_bind_by_name($stid, ":myclob", $clob, -1, OCI_B_CLOB);
oci_execute($stid, OCI_DEFAULT);
$clob-save("A very long string");
oci_commit($conn);
// Fetching CLOB data
$query = 'SELECT myclob FROM mytable WHERE mykey = :mykey';
$stid = oci_parse ($conn, $query);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_execute($stid, OCI_DEFAULT);
print 'table border="1"';
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
$result = $row['MYCLOB']-load();
print 'trtd'.$result.'/td/tr';
}
print '/table';
?
可以很容易地訪問(wèn)存儲(chǔ)過(guò)程,就和從命令行訪問(wèn)一樣。 例子 4. 使用存儲(chǔ)過(guò)程
?php
// by webmaster at remoterealty dot com
$sth = oci_parse($dbh, "begin sp_newaddress( :address_id, '$firstname',
'$lastname', '$company', '$address1', '$address2', '$city', '$state',
'$postalcode', '$country', :error_code );end;");
// This calls stored procedure sp_newaddress, with :address_id being an
// in/out variable and :error_code being an out variable.
// Then you do the binding:
oci_bind_by_name($sth, ":address_id", $addr_id, 10);
oci_bind_by_name($sth, ":error_code", $errorcode, 10);
oci_execute($sth);
?
連接處理
OCI8 擴(kuò)展提供了 3 個(gè)不同函數(shù)來(lái)連接 Oracle。取決于用戶來(lái)使用對(duì)自己的應(yīng)用程序最合適的函數(shù)。本節(jié)的信息有助于用戶作出合適的選擇。
連接到 Oracle 服務(wù)器從所需的時(shí)間上來(lái)講是個(gè)相當(dāng)花費(fèi)的操作。oci_pconnect() 函數(shù)使用了一個(gè)連接的持久緩沖區(qū),可以被不同的腳本請(qǐng)求重復(fù)使用。這意味著通常在每個(gè) PHP 進(jìn)程(或 Apache 子進(jìn)程)中只需要連接一次。
如果應(yīng)用程序連接 Oracle 時(shí)對(duì)每個(gè) web 用戶都使用了不同的認(rèn)證信息,則由 oci_pconnect() 使用的持久緩沖區(qū)就用處不大了,因?yàn)殡S著并發(fā)用戶的增加,到某個(gè)程度后會(huì)由于要保持太多的空閑連接而對(duì) Oracle 服務(wù)器的整體性能起到逆反的影響。如果應(yīng)用程序是這樣的架構(gòu),建議要么用 oci8.max_persistent 和 oci8.persistent_timeout 配置選項(xiàng)(此二者可以使用戶控制持久連接緩沖區(qū)的大小和生命周期)來(lái)協(xié)調(diào)應(yīng)用程序,要么用 oci_connect() 來(lái)連接。
oci_connect() 和 oci_pconnect() 都使用了一個(gè)連接緩沖區(qū)。如果在某個(gè)腳本中用同樣的參數(shù)多次調(diào)用 oci_connect(),則第二個(gè)和之后的調(diào)用會(huì)返回已有的連接句柄。oci_connect() 使用的連接緩沖區(qū)會(huì)在腳本執(zhí)行完畢后或者明確地關(guān)閉了連接句柄時(shí)被清空。oci_pconnect() 有相似的行為,不過(guò)其緩沖區(qū)獨(dú)立地維持著并在不同請(qǐng)求之間都存活著。
要記住此緩沖特性,因?yàn)樗箖蓚€(gè)句柄沒(méi)有在事務(wù)級(jí)隔離開(kāi)來(lái)(事實(shí)上是同一個(gè)連接句柄,因此沒(méi)有任何方式的隔離)。如果應(yīng)用程序需要兩個(gè)獨(dú)立的,事務(wù)級(jí)隔離的連接,應(yīng)該使用 oci_new_connect()。
oci_new_connect() 總是創(chuàng)建一個(gè)到 Oracle 服務(wù)器的新連接,不管其它連接是否已經(jīng)存在。高流量的 web 應(yīng)用應(yīng)該避免使用 oci_new_connect(),尤其是在程序最忙的部分。
有關(guān)于它的其他函數(shù):
目錄
OCI-Collection-append -- 向 collection 增加單元
OCI-Collection-assign -- 從現(xiàn)有的另一個(gè) collection 向 collection 賦值
OCI-Collection-assignElem -- 給 collection 中的單元賦值
OCI-Collection-free -- 釋放關(guān)聯(lián)于 collection 的對(duì)象的資源
OCI-Collection-getElem -- 返回單元的值
OCI-Collection-max -- 返回 collection 中單元的最大數(shù)目
OCI-Collection-size -- 返回 collection 中的單元數(shù)目
OCI-Collection-trim -- 從 collection 尾端開(kāi)始刪除單元
OCI-Lob-append -- Appends data from the large object to another large object
OCI-Lob-close -- 關(guān)閉 LOB 描述符
OCI-Lob-eof -- Tests for end-of-file on a large object's descriptor
OCI-Lob-erase -- Erases a specified portion of the internal LOB data
OCI-Lob-export -- 將 LOB 的內(nèi)容導(dǎo)出到文件中
OCI-Lob-flush -- Flushes/writes buffer of the LOB to the server
OCI-Lob-free -- 釋放與 LOB 描述符所關(guān)聯(lián)的資源
OCI-Lob-getBuffering -- Returns current state of buffering for the large object
OCI-Lob-import -- 將數(shù)據(jù)從文件導(dǎo)入 LOB
OCI-Lob-load -- 返回大對(duì)象的內(nèi)容
OCI-Lob-read -- Reads part of the large object
OCI-Lob-rewind -- Moves the internal pointer to the beginning of the large object
OCI-Lob-save -- 將數(shù)據(jù)保存到大對(duì)象中
OCI-Lob-seek -- Sets the internal pointer of the large object
OCI-Lob-setBuffering -- Changes current state of buffering for the large object
OCI-Lob-size -- Returns size of large object
OCI-Lob-tell -- Returns current position of internal pointer of large object
OCI-Lob-truncate -- Truncates large object
OCI-Lob-write -- Writes data to the large object
OCI-Lob-writeTemporary -- 寫入一個(gè)臨時(shí)的大對(duì)象
oci_bind_by_name -- 綁定一個(gè) PHP 變量到一個(gè) Oracle 位置標(biāo)志符
oci_cancel -- 取消從游標(biāo)讀取數(shù)據(jù)
oci_close -- 關(guān)閉 Oracle 連接
oci_commit -- 提交未執(zhí)行的事務(wù)處理
oci_connect -- 建立一個(gè)到 Oracle 服務(wù)器的連接
oci_define_by_name -- 在 SELECT 中使用 PHP 變量作為定義的步驟
oci_error -- 返回上一個(gè)錯(cuò)誤
oci_execute -- 執(zhí)行一條語(yǔ)句
oci_fetch_all -- 獲取結(jié)果數(shù)據(jù)的所有行到一個(gè)數(shù)組
oci_fetch_array -- Returns the next row from the result data as an associative or numeric array, or both
oci_fetch_assoc -- Returns the next row from the result data as an associative array
oci_fetch_object -- Returns the next row from the result data as an object
oci_fetch_row -- Returns the next row from the result data as a numeric array
oci_fetch -- Fetches the next row into result-buffer
oci_field_is_null -- 檢查字段是否為 NULL
oci_field_name -- 返回字段名
oci_field_precision -- 返回字段精度
oci_field_scale -- 返回字段范圍
oci_field_size -- 返回字段大小
oci_field_type_raw -- 返回字段的原始 Oracle 數(shù)據(jù)類型
oci_field_type -- 返回字段的數(shù)據(jù)類型
oci_free_statement -- 釋放關(guān)聯(lián)于語(yǔ)句或游標(biāo)的所有資源
oci_internal_debug -- 打開(kāi)或關(guān)閉內(nèi)部調(diào)試輸出
oci_lob_copy -- Copies large object
oci_lob_is_equal -- Compares two LOB/FILE locators for equality
oci_new_collection -- 分配新的 collection 對(duì)象
oci_new_connect -- 建定一個(gè)到 Oracle 服務(wù)器的新連接
oci_new_cursor -- 分配并返回一個(gè)新的游標(biāo)(語(yǔ)句句柄)
oci_new_descriptor -- 初始化一個(gè)新的空 LOB 或 FILE 描述符
oci_num_fields -- 返回結(jié)果列的數(shù)目
oci_num_rows -- 返回語(yǔ)句執(zhí)行后受影響的行數(shù)
oci_parse -- 配置 Oracle 語(yǔ)句預(yù)備執(zhí)行
oci_password_change -- 修改 Oracle 用戶的密碼
oci_pconnect -- 使用一個(gè)持久連接連到 Oracle 數(shù)據(jù)庫(kù)
oci_result -- 返回所取得行中字段的值
oci_rollback -- 回滾未提交的事務(wù)
oci_server_version -- 返回服務(wù)器版本信息
oci_set_prefetch -- 設(shè)置預(yù)提取行數(shù)
oci_statement_type -- 返回 OCI 語(yǔ)句的類型
ocibindbyname -- oci_bind_by_name() 的別名
ocicancel -- oci_cancel() 的別名
ocicloselob -- OCI-Lob-close 的別名
ocicollappend -- OCI-Collection-append 的別名
ocicollassign -- OCI-Collection-assign 的別名
ocicollassignelem -- OCI-Collection-assignElem 的別名
ocicollgetelem -- OCI-Collection-getElem 的別名
ocicollmax -- OCI-Collection-max 的別名
ocicollsize -- OCI-Collection-size 的別名
ocicolltrim -- OCI-Collection-trim 的別名
ocicolumnisnull -- oci_field_is_null() 的別名
ocicolumnname -- oci_field_name() 的別名
ocicolumnprecision -- oci_field_precision() 的別名
ocicolumnscale -- oci_field_scale() 的別名
ocicolumnsize -- oci_field_size() 的別名
ocicolumntype -- oci_field_type() 的別名
ocicolumntyperaw -- oci_field_type_raw() 的別名
ocicommit -- oci_commit() 的別名
ocidefinebyname -- oci_define_by_name() 的別名
ocierror -- oci_error() 的別名
ociexecute -- oci_execute() 的別名
ocifetch -- oci_fetch() 的別名
ocifetchinto -- 獲取下一行到一個(gè)數(shù)組
ocifetchistatement -- oci_fetch_all() 的別名
ocifreecollection -- OCI-Collection-free 的別名
ocifreecursor -- oci_free_statement() 的別名
ocifreedesc -- OCI-Lob-free 的別名
ocifreestatement -- oci_free_statement() 的別名
ociinternaldebug -- oci_internal_debug() 的別名
ociloadlob -- OCI-Lob-load 的別名
ocilogoff -- oci_close() 的別名
ocilogon -- oci_connect() 的別名
ocinewcollection -- oci_new_collection() 的別名
ocinewcursor -- oci_new_cursor() 的別名
ocinewscriptor -- oci_new_descriptor() 的別名
ocinlogon -- oci_new_connect() 的別名
ocinumcols -- oci_num_fields() 的別名
ociparse -- oci_parse() 的別名
ociplogon -- oci_pconnect() 的別名
ociresult -- oci_result() 的別名
ocirollback -- oci_rollback() 別名
ocirowcount -- oci_num_rows() 的別名
ocisavelob -- OCI-Lob-save 的別名
ocisavelobfile -- OCI-Lob-import 的別名
ociserverversion -- oci_server_version() 的別名
ocisetprefetch -- oci_set_prefetch() 的別名
ocistatementtype -- oci_statement_type() 的別名
ociwritelobtofile -- OCI-Lob-export 的別名
ociwritetemporarylob -- OCI-Lob-writeTemporary 的別名
string ins="insert into 表 values(:字段1,:字段2,:字段3,:字段4........)";
sqlserver和oracle所用占位符不一樣的
:是Oracle的binding variable的語(yǔ)法,在寫SQL和PL/SQL的時(shí)候經(jīng)常使用,但不代表不使用:就不用綁定變量或使用:就一定是綁定變量
點(diǎn)擊軟鍵盤,選擇特殊符號(hào)即可,占位符的唯一有效值是一個(gè)數(shù)字。
windows和Linux都能執(zhí)行
Oracle Call Interface(OCI)使用戶可以訪問(wèn) Oracle 10,Oracle9,Oracle8 和 Oracle7 數(shù)據(jù)庫(kù)。支持將 PHP 變量與 Oracle 占位符(placeholder)綁定,具有完整的 LOB,F(xiàn)ILE 和 ROWID 支持,以及允許使用用戶提供的定義變量。
例子 1. 基本查詢
?php
$conn = oci_connect('hr', 'hr', 'orcl');
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}
$query = 'SELECT * FROM DEPARTMENTS';
$stid = oci_parse($conn, $query);
if (!$stid) {
$e = oci_error($conn);
print htmlentities($e['message']);
exit;
}
$r = oci_execute($stid, OCI_DEFAULT);
if(!$r) {
$e = oci_error($stid);
echo htmlentities($e['message']);
exit;
}
print 'table border="1"';
while($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
print 'tr';
foreach($row as $item) {
print 'td'.($item?htmlentities($item):' ').'/td';
}
print '/tr';
}
print '/table';
oci_close($conn);
?
例子 2. 用綁定變量插入
?php
// Before running, create the table:
// CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));
$conn = oci_connect('scott', 'tiger', 'orcl');
$query = 'INSERT INTO MYTABLE VALUES(:myid, :mydata)';
$stid = oci_parse($conn, $query);
$id = 60;
$data = 'Some data';
oci_bind_by_name($stid, ':myid', $id);
oci_bind_by_name($stid, ':mydata', $data);
$r = oci_execute($stid);
if($r)
print "One row inserted";
oci_close($conn);
?
例子 3. 將數(shù)據(jù)插入到 CLOB 列中
?php
// Before running, create the table:
// CREATE TABLE MYTABLE (mykey NUMBER, myclob CLOB);
$conn = oci_connect('scott', 'tiger', 'orcl');
$mykey = 12343; // arbitrary key for this example;
$sql = "INSERT INTO mytable (mykey, myclob)
VALUES (:mykey, EMPTY_CLOB())
RETURNING myclob INTO :myclob";
$stid = oci_parse($conn, $sql);
$clob = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_bind_by_name($stid, ":myclob", $clob, -1, OCI_B_CLOB);
oci_execute($stid, OCI_DEFAULT);
$clob-save("A very long string");
oci_commit($conn);
// Fetching CLOB data
$query = 'SELECT myclob FROM mytable WHERE mykey = :mykey';
$stid = oci_parse ($conn, $query);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_execute($stid, OCI_DEFAULT);
print 'table border="1"';
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
$result = $row['MYCLOB']-load();
print 'trtd'.$result.'/td/tr';
}
print '/table';
?
網(wǎng)站標(biāo)題:oracle占位符怎么打,excle占位符
文章起源:http://vcdvsql.cn/article12/hssjgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)站維護(hù)、網(wǎng)站制作、品牌網(wǎng)站制作、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)