17.10 - SQLストアド プロシージャの例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データベース入門

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Content Type
ユーザー ガイド
Publication ID
B035-1091-171K-JPN
Language
日本語 (日本)
Last Update
2022-01-13

Employee表に新しい従業員を追加し、従業員が所属する部門の名前を抽出するために使用できる、NewProcという名前のSQLストアド プロシージャを作成することを想定します。また、すでに存在する行を挿入しようとした場合にエラーを報告し、エラー状況の処理を行なう機能を組み込みます。

以下のSQLストアド プロシージャ定義には、入れ子形式のラベル付き複合文が組み込まれています。L3というラベルが付いた複合文は、外側の複合文L1の中で入れ子になっています。L2というラベルが付いた複合文は状況処理機能のハンドラー アクション句であることに注意する必要があります。

このSQLストアド プロシージャでは、呼び出し(実行)時に毎回入力する必要のあるパラメータを定義しています。

CREATE PROCEDURE NewProc (IN name CHAR(12),
              IN num INTEGER,
              IN dept INTEGER,
              OUT dname CHAR(10),
              INOUT p1 VARCHAR(30))
L1: BEGIN
   DECLARE CONTINUE HANDLER FOR SQLSTATE value '23505'
    L2: BEGIN
        SET p1='Duplicate Row'
		;
    END L2;
        L3: BEGIN
        INSERT INTO Employee (EmpName, EmpNo, DeptNo)
        VALUES (name, num, dept)
	;
       
        SELECT DeptName
        INTO dname FROM Department
        WHERE DeptNo = dept;
        IF SQLCODE <> 0 THEN LEAVE L3;
        ...
        END L3
		 ;
END L1
;