ストアド プロシージャは、実行中に複数回呼び出すことができる事前定義された SQL ステートメントのセットです。これは、呼び出されるたびに実行される特定のパラメーターとロジックを定義できるテンプレートのようなものです。 Oracle データベースはストアド プロシージャをサポートしています。以下では、Oracle ストアド プロシージャの SQL ステートメントの記述方法を紹介します。
Oracle ストアド プロシージャを作成するには、CREATE PROCEDURE ステートメントを使用する必要があります。構文は次のとおりです。
CREATE PROCEDURE プロシージャ名(パラメータ 1 データ型, パラメータ 2 データ型, パラメータ 3 データ型, ...)
IS
-- 変数宣言
BEGIN
-- SQLストアド プロシージャのステートメント
-- 条件ステートメント、ループ ステートメントなどを含めることができます。
END;
ストアド プロシージャを作成するときは、ストアド プロシージャのパラメータを指定する必要があります。パラメータ リストでは、各パラメータの名前、データ型、長さを指定する必要があります。以下に例を示します。
CREATE PROCEDURE get_employee_details (employee_id IN NUMBER,employee_name OUT VARCHAR2,employee_salary OUT NUMBER)
IS
BEGIN
SELECT last_name INTOemployee_name,給与 INTOemployee_salary
FROMemployees
WHEREemployee_id = get_employee_details.employee_id;
END;
この例では、employee_id、employee_name、employee_salary の 3 つのパラメータを定義します。 employee_id は入力パラメータであり、employee_name とemployee_salary は両方とも出力パラメータです。
ストアド プロシージャ内の SQL ステートメントには、条件ステートメントとループ ステートメントを含めることができます。以下は、ループと条件文を含むストアド プロシージャの例です。
CREATE PROCEDURE get_top_employees (top_n IN NUMBER)
IS
-- 変数宣言
total_salary NUMBER;
BEGIN
SELECT SUM(salary) INTO total_salary FROM 従業員;
-- 平均給与の計算
DECLARE
avg_salary NUMBER;
BEGIN
avg_salary := total_salary / top_n; -- 查找工资大于平均值的前 N 名员工 FOR r IN (SELECT * FROM employees WHERE salary > avg_salary ORDER BY salary DESC) LOOP -- 输出结果 DBMS_OUTPUT.PUT_LINE('Employee ID: ' || r.employee_id || ', Name: ' || r.last_name || ', Salary: ' || r.salary); END LOOP;
END;
END;
この例では、全従業員の給与総額を計算してから、平均給与を計算します。次に、給与が平均より高い上位 N 人の従業員を見つけて結果を出力します。
要約すると、Oracle ストアド プロシージャ SQL ステートメントの作成は難しくありません。特定のニーズに応じてさまざまな SQL ステートメントとプログラム ロジックを柔軟に組み合わせて、複雑なビジネス ロジックを実装できます。
以上がOracle ストアド プロシージャの SQL ステートメントを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。