ただし、ストアド プロシージャを使用すると、速度と効率という 2 つの最も明らかな利点が少なくとも得られます。ストアド プロシージャを使用した方が明らかに高速です。効率の観点から、アプリケーションが一連の SQL 操作を一度に実行する必要がある場合は、PHP と Oracle の間を往復する必要があります。往復の回数を減らすために、アプリケーションをデータベースに直接配置する方が良いでしょう。そして効率を高めます。ただし、インターネット アプリケーションでは速度が非常に重要であるため、ストアド プロシージャを使用する必要があります。私も少し前に PHP を使用してストアド プロシージャを呼び出し、次の例を実行しました。
コード
コードをコピー コードは以下の通りです:
//テストテーブルを作成します
create table test (
idnumber(16) not null,
name varchar2(30) not null,
primary key (id )
);
//テスト値に挿入 (5, 'php_book');
//ストアドプロシージャを作成します
プロシージャを作成または置換します proc_test (
p_id in out number,
p_name out varchar2
) as
begin
select name into p_name
from test
where id = 5
php code
コードをコピー コードは次のとおりです。 //データベース接続を確立します $user = "scott"; //データベースユーザー名
$password = "tiger" // パスワード $conn_str = "tnsname"; // 接続文字列 (cstr : connection_string)
//リモート接続するかどうか
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 ストアド プロシージャ名 ([[:] パラメータ])
* コロンを追加すると、パラメータが位置であることを示します
**/
$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); //execute
ociexecute ($stmt); ;
//結果
echo "名前は$name
";
以上、oracleen が PHP を使用して Oracle ストアド プロシージャを呼び出す方法を、oracleen の内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。