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

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

WBOY
WBOYオリジナル
2016-06-21 09:05:111297ブラウズ

oracle|ストアド プロシージャ

私は PHP を学び始めてからジョイインターナショナルビレッジに来ています。数か月が経ちましたが、私自身がサンプルを書いたので、役立つことを願っています。

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

記事を書くのは初めてです(以前はコメントに投稿していました)、皆さんが私を修正してくれることを願っています!

コード:

----------------------------------------------------- --------------------
//テストテーブルを作成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テスト WHERE ID = 5; END PROC_TEST; - ------------------------

PHP コード:

-------------- ------------ -------------------------------------- --

// データベース接続を確立します$user = "scott"; //データベースユーザー名
$password = "tiger" //パスワード
$conn_str = "tnsname"; string (cstr: Connection_STRing)
$remote = true / /リモート接続するかどうか
if ($remote) {
$conn = OCILogon($user, $password, $conn_str);
}
else {
$conn = OCILogon ($user, $password);
}

/ /Set binding
$id = 5; //バインディング用の php 変数 ID を準備します
$name = "" //バインディング用の php 変数名を準備します

/ **ストアド プロシージャを呼び出す SQL ステートメント (sql_sp: SQL_StoreProcedure)
* 構文:
* BEGIN ストアド プロシージャ名 ([[:] パラメータ])
* コロンを追加すると、パラメータが位置であることを示します
**/
$sql_sp = "BEGIN PROC_TEST(:id, :name); END;";

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

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

//Execute
OCIExecute($stmt);

//Result
echo "name : $name
";

?>



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。