PHP調用Oracle的存儲過程實現方法

2017-03-15 1249 8 編輯:深圳網站建設 來源:互聯網

存儲過程很高端、大氣、上檔次,對于存儲過程我一向的觀點是支持使用,必竟我們追求數據存儲的“速度和效率”,Oracle作為超專業級的數據庫服務引擎,在效率上,如果一次需要做一系列SQL操作,則需要往返于PHP與ORACLE之間,不如把操作直接放到數據庫,這樣有效減少往返次數,增加效率。為了能讓想了解存儲過程的朋友便于理解,寫了下面這個例子,先來看如何建立數據表和存儲過程:

//在Oracle中建立一個供測試的數據表

CREATE TABLE TEST (

  ID        NUMBER(16)        NOT NULL,

  NAME      VARCHAR2(30)      NOT NULL,

  PRIMARY KEY (ID)

);

//插入一條數據

INSERT INTO TEST VALUES (5, 'PHP_BOOK');

//建立一個存儲過程

CREATE OR REPLACE PROCEDURE PROC_TEST (

  p_id IN OUT NUMBER,

  p_name OUT VARCHAR2

) AS

BEGIN

  SELECT NAME INTO p_name

    FROM TEST

    WHERE ID = 5;

END PROC_TEST;

在PHP中調用,不多費話了,代碼里都有注釋的,聰明的你相信會看懂:

<?php

//建立數據庫連接

$user = "test"; //數據庫用戶名

$password = "test"; //密碼

$conn_str = "tnsname"; //連接串(cstr : Connection_STRing)

$remote = true //是否遠程連接

if ($remote) {

  $conn = OCILogon($user, $password, $conn_str);

}

else {

  $conn = OCILogon($user, $password);

}

//設置綁定

$id = 5; //準備綁定的php變量 id

$name = ""; //準備綁定的php變量名

/* 調用存儲過程的sql語句(sql_sp : SQL_StoreProcedure)

 *  語法:

 *  BEGIN 存儲過程名([[:]參數]); END;

 *  加上冒號表示該參數是一個位置

*/

$sql_sp = "BEGIN PROC_TEST(:id, :name); END;";

$stmt = OCIParse($conn, $sql_sp);

//執行綁定

OCIBindByName($stmt, ":id", $id, 16);//參數說明:綁定php變量$id到位置:id,并設定綁定長度16位

OCIBindByName($stmt, ":name", $name, 30);

OCIExecute($stmt);

//結果

echo "name is : $name<br>";

?>

PHP調用Oracle的存儲過程.jpg

專業的網站建設公司,深正互聯,如您有網站營銷需求,請您關注我們,或者致電13828884598

本站文章均為深正網站建設摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,我們歡迎您分享,引用和轉載,但謝絕直接搬磚和抄襲!感謝...
關注深正互聯
我們猜你喜歡
七星彩头尾