Teradata-ストアドプロシージャ

ストアドプロシージャには、SQLステートメントとプロシージャルステートメントのセットが含まれています。手続き型ステートメントのみを含めることができます。ストアドプロシージャの定義はデータベースに保存され、パラメータはデータディクショナリテーブルに保存されます。

利点

  • ストアドプロシージャは、クライアントとサーバー間のネットワーク負荷を軽減します。

  • データは直接アクセスするのではなく、ストアドプロシージャを介してアクセスされるため、セキュリティが向上します。

  • ビジネスロジックがテストされてサーバーに保存されるため、メンテナンスが向上します。

手順の作成

ストアドプロシージャは、CREATEPROCEDUREステートメントを使用して作成されます。

構文

以下は、CREATEPROCEDUREステートメントの一般的な構文です。

CREATE PROCEDURE <procedurename> ( [parameter 1 data type, parameter 2 data type..] ) 
BEGIN 
   <SQL or SPL statements>; 
END;

次の給与表を検討してください。

従業員番号 キモい 控除 給料
101 40,000 4,000 36,000
102 80,000 6,000 74,000
103 90,000 7,000 83,000
104 75,000 5,000 70,000

次の例では、InsertSalaryという名前のストアドプロシージャを作成して、値を受け入れ、給与テーブルに挿入します。

CREATE PROCEDURE InsertSalary ( 
   IN in_EmployeeNo INTEGER, IN in_Gross INTEGER, 
   IN in_Deduction INTEGER, IN in_NetPay INTEGER 
) 
BEGIN 
   INSERT INTO Salary ( 
      EmployeeNo, 
      Gross, 
      Deduction, 
      NetPay 
   ) 
   VALUES ( 
      :in_EmployeeNo, 
      :in_Gross, 
      :in_Deduction, 
      :in_NetPay 
   ); 
END;

手順の実行

ストアドプロシージャは、CALLステートメントを使用して実行されます。

構文

以下は、CALLステートメントの一般的な構文です。

CALL <procedure name> [(parameter values)];

次の例では、ストアドプロシージャInsertSalaryを呼び出し、給与テーブルにレコードを挿入します。

CALL InsertSalary(105,20000,2000,18000);

上記のクエリが実行されると、次の出力が生成され、Salaryテーブルに挿入された行が表示されます。

従業員番号 キモい 控除 給料
101 40,000 4,000 36,000
102 80,000 6,000 74,000
103 90,000 7,000 83,000
104 75,000 5,000 70,000
105 20,000 2,000 18,000