PHP で Oracle データベースのストアド プロシージャと関数を使用する方法
はじめに:
Oracle は、一般的に使用されるリレーショナル データベース管理システムです。開発では、多くの場合、ストアド プロシージャとストアド関数を使用する必要があります。より効率的で柔軟なデータ処理機能を提供します。この記事では、PHP で Oracle データベースのストアド プロシージャと関数を使用する方法を紹介し、いくつかの実用的なコード例を示します。
1. ストアド プロシージャを作成する
Oracle では、ストアド プロシージャは、パラメータを受け取って結果を返す、プリコンパイルされた SQL ステートメントのセットです。以下は、2 つの数値の合計を計算するストアド プロシージャを Oracle データベースに作成する方法を示す簡単な例です。
CREATE OR REPLACE PROCEDURE calculate_sum( num1 IN NUMBER, num2 IN NUMBER, sum OUT NUMBER ) AS BEGIN sum := num1 + num2; END; /
上の例では、calculate_sum
はストアド プロシージャの名前です。 ##num1 と
num2 は入力パラメータ、
sum は出力パラメータです。
PHP では、OCI8 拡張機能を介して Oracle データベースに接続し、ストアド プロシージャを呼び出すことができます。
<?php $conn = oci_connect('username', 'password', 'connection_string'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } ?>
username をユーザー名に置き換えます。 「database」では、
password をデータベースのパスワードに、
connection_string をデータベース接続文字列に置き換えます。
<?php $sql = "BEGIN calculate_sum(:num1, :num2, :sum); END;"; $stmt = oci_parse($conn, $sql); $num1 = 10; $num2 = 20; oci_bind_by_name($stmt, ':num1', $num1); oci_bind_by_name($stmt, ':num2', $num2); oci_bind_by_name($stmt, ':sum', $sum, 20); oci_execute($stmt); echo "Sum: " . $sum; oci_free_statement($stmt); oci_close($conn); ?>
calculate_sum は、ストアド プロシージャ、
:num1、
:num2、および
:sum はパラメータ名です。
oci_bind_by_name 関数を使用して、PHP 変数をストアド プロシージャのパラメータにバインドし、パラメータを渡して結果を受け取ることができます。
oci_parse 関数は SQL ステートメントを解析してステートメント ハンドルを返すために使用され、
oci_execute 関数は SQL ステートメントを実行するために使用されることに注意してください。
ストアド プロシージャに加えて、Oracle は関数の作成もサポートしています。関数は、パラメーターを受け取り、単一の結果を返すことができるプリコンパイルされた SQL ステートメントのセットです。以下は、Oracle データベースで 2 つの数値の差を計算する関数を作成する方法を示す簡単な例です。
CREATE OR REPLACE FUNCTION calculate_difference( num1 IN NUMBER, num2 IN NUMBER ) RETURN NUMBER AS diff NUMBER; BEGIN diff := num1 - num2; RETURN diff; END; /
calculate_difference は関数の名前
num1# です。 ## および num2
は入力パラメータです。
<?php $conn = oci_connect('username', 'password', 'connection_string'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } $sql = "SELECT calculate_difference(:num1, :num2) AS difference FROM DUAL"; $stmt = oci_parse($conn, $sql); $num1 = 50; $num2 = 30; oci_bind_by_name($stmt, ':num1', $num1); oci_bind_by_name($stmt, ':num2', $num2); oci_execute($stmt); $result = oci_fetch_assoc($stmt); echo "Difference: " . $result['DIFFERENCE']; oci_free_statement($stmt); oci_close($conn); ?>
と :num2
は関数のパラメーター名です。 , DUAL
は Oracle の仮想テーブルで、単一行および単一列の結果を返すために使用されます。 結論:
以上がPHP で Oracle データベースのストアド プロシージャと関数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。