ホームページ > php教程 > php手册 > PHP を使用した Oracle ストアド プロシージャの呼び出し

PHP を使用した Oracle ストアド プロシージャの呼び出し

WBOY
リリース: 2016-06-13 12:43:09
オリジナル
1138 人が閲覧しました

PHP プログラムはストアド プロシージャを使用してデータベースにアクセスできます。
この問題については、ストアド プロシージャを使用する必要があると考えている人もいます。緊密な連携はより注意してください。一方が変更されると、それを維持することが明らかに困難になります。
しかし、ストアド プロシージャを使用すると、速度と効率という最も明白な利点が少なくとも 2 つあります。
ストアド プロシージャを使用した方が明らかに高速です。
効率の観点から、アプリケーションが一連の SQL 操作を一度に実行する必要がある場合、PHP と ORACLE の間を行ったり来たりする必要があるため、その数を減らすためにアプリケーションをデータベースに直接配置する方が良いでしょう。往復の時間を短縮し、効率を向上させます。
しかし、インターネット アプリケーションでは速度が非常に重要であるため、ストアド プロシージャを使用する必要があります。
また、PHP を使用してストアド プロシージャを呼び出し、次の例を実行しました。

コード:------------------------------------------ --- ---------------------------------------------------

//TEST テーブルを作成します
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 コード:--------------------- ---------------------------------- ---------------- -----------------------

//データベース接続を確立
$user = "scott"; // データベースユーザー名
$password = "tiger";
if ($remote) { $conn = OCILogon($user, $password, $conn_str);
}
else {
$conn = OCILogon($user, $password);
}

//バインディングを設定します
$id = 5; バインディング用のphp変数名を準備します

ストアド プロシージャを呼び出す SQL ステートメント (sql_sp: SQL_StoreProcedure)

* 構文:
* BEGIN ストアド プロシージャ名 ([[:]parameter]) END;
* コロンを追加すると、パラメータが位置

*/***/

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

//解析
$stmt = OCIParse($conn, $sql_sp);

//バインディングを実行

OCIBindByName($stmt, ":id" , $id, 16); // パラメータの説明: PHP 変数 $id をposition:id にバインドし、バインド長を 16 ビットに設定します

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

//

OCIExecute($stmt);

//結果

echo "name is : $name
";


? >


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート