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 |