Teradata-stored-procedure

提供:Dev Guides
移動先:案内検索

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

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

利点

  • ストアドプロシージャにより、クライアントとサーバー間のネットワーク負荷が軽減されます。
  • 直接アクセスするのではなく、ストアドプロシージャを使用してデータにアクセスするため、セキュリティが向上します。
  • ビジネスロジックがテストされ、サーバーに保存されるため、メンテナンスが向上します。

作成手順

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

構文

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

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

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

EmployeeNo Gross Deduction NetPay
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を呼び出し、Salary Tableにレコードを挿入します。

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

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

EmployeeNo Gross Deduction NetPay
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