目的
オープン カーソルをクローズし、カーソルがオープンしていた間に保持していたリソースをリリースします。
呼び出し
実行可能形式。
ストアド プロシージャおよび埋め込みSQL。
構文
- cursor_name
- 閉じる対象である、開いているカーソルの名前。
ANSI準拠
ANSI/ISO SQL:2011準拠。
許可
なし。
ルール
結果セット カーソルは、CLOSEしてはいけません。ストアド プロシージャで結果セット カーソルを閉じると、その結果セットは削除され、返されなくなります。
cursor_nameで識別されるカーソルは、事前に宣言しておく必要があります。
cursor_nameで識別されるカーソルが開いていなければなりません。
ストアド プロシージャ内でCLOSEが実行依頼される時点でcursor_nameがオープンしていない場合、次の実行時例外が発生します。
- SQLCODEは7631に設定される
- SQLSTATEは‘24501’に設定される
複合ストアド プロシージャ文から制御が渡されると、その複合文の本体の中で宣言されているすべてのオープン カーソルは、ストアド プロシージャによって暗黙的に閉じられます。
CLOSEを動的SQL文として実行することはできません。
例: カーソルを開く
次に示すCLOSEの例では、カーソル名projcursorで識別されるカーソルをOPENしてからCLOSEしているため有効です。
CREATE PROCEDURE sp1 (OUT par1 INTEGER, OUT Par2 CHAR(30)) BEGIN DECLARE projcursor CURSOR FOR SELECT * FROM project ORDER BY projid; OPEN projcursor; Label1: LOOP: FETCH projcursor INTO par1, par2; IF (SQLSTATE = '02000') THEN LEAVE label1; END IF; END LOOP label1; CLOSE projcursor; END;
例: カーソルを閉じる
次に示す例のCLOSEでは、明示的にprojcursorを閉じています。empcursorカーソルには、OPENはありますが明示的なCLOSEはありません。この場合のempcursorは、ストアド プロシージャが終了するときに暗黙的に閉じられます。
CREATE PROCEDURE sp1 (IN par1 CHAR(5)) BEGIN DECLARE projcursor CURSOR FOR SELECT * FROM project ORDER BY projid; DECLARE empcursor CURSOR FOR SELECT * FROM employee WHERE dept_code = par1; OPEN projcursor; OPEN empcursor; CLOSE projcursor; END;
関連トピック
次の文の詳細については、以下のトピックを参照してください。
- CLOSEの場合は、OPEN (埋め込みSQL形式)およびOPEN (ストアド プロシージャ形式)を参照してください。
- 開いているカーソルを閉じるCOMMITとROLLBACKの文については、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。
- ストアド プロシージャおよび埋め込みSQLアプリケーションで使用する他のDML文については、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。