本文目錄一覽:
php調用oracle存儲過程與函數
對於存儲過程的源代碼,開始都需要先定義接受的參數,例如:
PROCEDURE edit_entry(
status_out OUT NUMBER,
status_msg_out OUT VARCHAR2,
id_inout IN OUT INTEGER,
title_in IN VARCHAR2,
text_out OUT CLOB,
categories_in IN list_of_numbers
);
從 PHP 中調用存儲過程 對於要從 PHP 中執行以調用過程的 SQL 語句而言,您將通常在 Oracle BEGIN …END; 塊(稱作匿名塊)中嵌入調用。例如:
?php
// etc.
//$sql = ‘BEGIN sayHello(:name, :message); END;’;
//然後,通過調用 oci_bind_by_name() 將參數綁定到 PHP 變數。 如果使用以下 DDL 語句定義了 sayHello
//:
//CREATE OR REPLACE PROCEDURE
//sayHello (name IN VARCHAR2, greeting OUT VARCHAR2)
//AS
//BEGIN
//greeting := ‘Hello ‘ || name;
//END;
//
//注意,您可以使用 SQL*Plus 命令行運行上面的語句。將該語句保存到文件 (SAYHELLO.SQL)。接下來,使用
//SQL*Plus 登錄:
// $ sqlplus username@SID
// 然後,使用 START 命令創建該過程:
// SQL START /home/username/SAYHELLO.SQL
// 以下 PHP 腳本調用該過程:
$conn = oci_connect(‘SCOTT’,’TIGER’) or die;
$sql = ‘BEGIN sayHello(:name, :message); END;’;
$stmt = oci_parse($conn,$sql);
// Bind the input parameter
oci_bind_by_name($stmt,’:name’,$name,32);
// Bind the output parameter
oci_bind_by_name($stmt,’:message’,$message,32);
// Assign a value to the input
$name = ‘Harry’;
oci_execute($stmt);
// $message is now populated with the output value
print “$message\n”;
?
調用程序包中的過程時,將使用句號來分隔程序包名稱與過程名稱。 可以使用以下語句指定 blog 程序包:
CREATE OR REPLACE PACKAGE blog AS
TYPE cursorType IS REF CURSOR RETURN blogs%ROWTYPE;
/*
Fetch the latest num_entries_in from the blogs table, populating
entries_cursor_out with the result
*/
PROCEDURE latest(
num_entries_in IN NUMBER,
entries_cursor_out OUT cursorType
);
/*
Edit a blog entry.If id_inout is NULL, results in an INSERT, otherwise
attempts to UPDATE the existing blog entry. status_out will have the value
1 on success, otherwise a negative number on failure with status_msg_out
containing a description
categories_in is a collection where list_of_numbers is described by
TYPE list_of_numbers AS VARRAY(50) OF NUMBER;
*/
PROCEDURE edit_entry(
status_out OUT NUMBER,
status_msg_out OUT VARCHAR2,
id_inout IN OUT INTEGER,
title_in IN VARCHAR2,
text_out OUT CLOB,
categories_in IN list_of_numbers
);
END blog;
/
PHP如何連接oracle資料庫
首先你要在php.ini文件中找到
extension=php_oci8.dll 前面的注釋符號「;」去掉,使php能夠載入支持oracle的模塊;
下面的代碼是調試通過的,可直接使用的:
html
body
?php
$dbconn=OCILogon(“root”,”pass”,”(DESCRIPTION=(ADDRESS=(PROTOCOL =TCP)(HOST=遠程IP)(PORT = 1521))(CONNECT_DATA =(SID=GZXNCW)))”);
if($dbconn!=false)
{
echo “連接成功”;
if(OCILogOff($dbconn)==true)
{
echo “關閉連接成功!”;
}
}
else
{
echo “連接失敗”;
}
?
/body
/html
?php
$dbconn=oci_connect(“你的賬號”,”你的密碼”,”你的資料庫名稱”);//請把中文件設置為你的值;
$stmt=oci_parse($dbconn, “select * from scott.hallo”);
oci_execute($stmt, OCI_DEFAULT);
echo $conn.”—-selecting\n\n”;
while (oci_fetch($stmt))
{
echo ($conn.”[“.oci_result($stmt, “TEST”).”]\n\n”);
}
echo ($conn . “—-done\n\n”);
?
php 連接oracle資料庫語句怎麼寫?
以系統為windowns為例,
1、先PHP.INI中的oracle擴展也開啟了
PHP下php.ini(注意,有時是在windows目錄)修改下下
其中的
extension=php_oci8.dll 去掉前面的「;」號
extension=php_oracle.dll 去掉前面的「;」號
把php_oci8.dll 、和php_oracle.dll 文件複製到windwos的system32下
2、系統中應當有安裝ORCALE的系統,然後配製遠程ORACLE的的監聽。就是你能用你配好的ORACLE系統訪問遠程的資料庫。
{例:
在ORACLE安裝目錄下找到tnsnames.ora,然後按下面的例子配置一下
BASETEST 命名=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.XX.XX伺服器IP地址)(PORT = 1521埠))
)
(CONNECT_DATA = (SERVICE_NAME = masprod 實例ID))
)
}
3.在你的PHP網頁目錄下寫個測試連接的程序試試
?php
$dbconn=OCILogon(“username”,”pwd”,”(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = [遠程伺服器IP])(PORT = 1515))
)
(CONNECT_DATA =
(SERVICE_NAME = [資料庫名字])
))”);
if($dbconn!=false)
{
echo “連接成功”;
if(OCILogOff($dbconn)==true)
{
echo “關閉連接成功!”;//=這裡有問題
}
}
else
{
echo “連接失敗”;
}
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244698.html