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 |