Oracle ストアド プロシージャは、単一のコード ブロックで一連の SQL ステートメントを繰り返し実行するクエリ言語です。ストアド プロシージャの利点は、作成およびテストされた SQL コードを再利用できること、SQL ステートメントの作成プロセスを簡素化できること、およびコードの実行効率を向上できることです。ただし、ストアド プロシージャから特定の値や結果を取得する必要がある場合があります。これには、ストアド プロシージャの戻り値を使用する必要があります。
ストアド プロシージャの戻り値は、数値、文字列、日付、またはブール値です。ストアド プロシージャからの戻り値は、コードを使いやすく、読みやすく、再利用しやすくします。
Oracle ストアド プロシージャの戻り値には、関数のような明確な戻り値の型がありません。したがって、ストアド プロシージャでは、OUT パラメータまたは IN OUT パラメータを介して、値を呼び出すプログラムに値を渡す必要があります。
Oracle では、ストアド プロシージャの戻り値は、OUT パラメータまたは IN OUT パラメータを通じて返すことができます。 OUT または IN OUT パラメーターを使用すると、ストアド プロシージャが結果値を返したり、入力パラメーターの値をストアド プロシージャに渡すことができ、ストアド プロシージャと呼び出し側プログラムがこれらの値に関して対話できるようになります。
次は、2 つの値の積を出力する単純なストアド プロシージャです:
CREATE OR REPLACE PROCEDURE SP_MULTIPLY (input1 IN NUMBER, input2 IN NUMBER, result OUT NUMBER) AS BEGIN result := input1 * input2; END;
このストアド プロシージャでは、2 つの入力パラメーター input1 と input2 を受け入れ、それらの値を追加します。積は次の場所に保存されます。結果変数。OUT パラメータとして返されます。
ストアド プロシージャは次のように呼び出されます。
DECLARE output NUMBER; BEGIN SP_MULTIPLY(5, 10, output); DBMS_OUTPUT.PUT_LINE('The product is ' || output); END;
ストアド プロシージャを呼び出すときは、変数出力を宣言し、それを OUT パラメータとしてストアド プロシージャ SP_MULTIPLY に渡し、結果を保存する必要があります。 。ストアド プロシージャが返された後、 DBMS_OUTPUT.PUT_LINE を呼び出して結果を出力できます。
ストアド プロシージャは、OUT パラメータに加えて、ストアド プロシージャと呼び出し元プログラムの間でデータを交換するために IN OUT パラメータも使用できます。たとえば、以下のストアド プロシージャでは、数値を入力として受け入れ、それを既存の数値に加算し、その結果をパラメータ OUT に格納して返します。
CREATE OR REPLACE PROCEDURE SP_ADD (input IN NUMBER, result IN OUT NUMBER) AS BEGIN result := result + input; END;
このストアド プロシージャを呼び出す方法は次のとおりです。
DECLARE output NUMBER := 10; BEGIN SP_ADD(5, output); DBMS_OUTPUT.PUT_LINE('The result is ' || output); END;
ストアド プロシージャを呼び出すときは、入力として数値を渡し、IN OUT パラメータとして別の数値変数出力を渡します。ストアド プロシージャが実行された後、結果変数には最終結果が含まれます。
要約すると、ストアド プロシージャの戻り値は、OUT パラメータまたは IN OUT パラメータを通じて返すことができます。 OUT または IN OUT パラメーターを使用すると、ストアド プロシージャが結果値を返したり、入力パラメーターの値をストアド プロシージャに渡すことができ、ストアド プロシージャと呼び出し側プログラムがこれらの値に関して対話できるようになります。ストアド プロシージャを作成するときは、ストアド プロシージャの戻り値を正しく使用するために、パラメータの型と配信方法に特別な注意を払う必要があります。
以上がOracle ストアド プロシージャの戻り値の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。