0
這個簡短的介紹瞭如何:如何調用Oracle存儲函數/過程與PHP和Zend DB號碼列表
- 到Oracle數據庫使用的PHP Zend DB連接
- 調用存儲程序/存儲與Zend DB功能
- 到傳遞一個真實陣列或作爲輸入參數到存儲過程/功能的整數的集合(我不會在逗號分隔的值的字符串傳遞)
- 到得到
讓我們去:存儲函數
(我使用了Oracle 11.x的,PHP 5.x和Zend框架的1.x注)的結果。
創建甲骨文列表類型:
CREATE OR REPLACE TYPE NUMBER_LIST_TYPE IS TABLE OF NUMBER;
創建一個存儲功能:
CREATE FUNCTION MY_STORED_FUNCTION(id_list in NUMBER_LIST_TYPE) RETURN NUMBER AS
lv_list_size number;
BEGIN
select count(*) into lv_list_size from table(id_list);
RETURN lv_list_size;
END MY_STORED_FUNCTION;
創建一個PHP文件:
<?php
require_once 'Zend/Db.php';
require_once 'DataSource.php';
$db_config['host'] = 'khazgoroth';
$db_config['port'] = 1521;
$db_config['username'] = 'thrall';
$db_config['password'] = 'chuchu';
$db_config['dbname'] = 'orgrimmar'; // see TNSNAMES.ORA
$db = Zend_Db::factory('Oracle', $db_config);
$conn = $db->getConnection();
$sql = 'BEGIN :r := MY_STORED_FUNCTION(:pmids); END;';
// Create an OCI-Collection object of NUMBER_LIST_TYPE
$ids = oci_new_collection($conn, 'NUMBER_LIST_TYPE');
$id_array = array(1, 12, 67);
// Append all IDs to the collection;
foreach ($id_array as $id) {
$ids->append($id);
}
// create a statement and bind the parameters
$stmt = new Zend_Db_Statement_Oracle($db, $sql);
$stmt->bindParam(':pmids', $ids, SQLT_NTY);
$stmt->bindParam(':r', $result, SQLT_INT); // this is the result of the Stored Function
$stmt->execute();
print "Result: $result";
?>
希望這可以幫助別人。
描述(如何)應該顯示,可以使用Zend_Db和oci_new_collection的一點幫助。 – gfjr