CLOSE - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLストアド プロシージャおよび埋め込みSQL

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
ft:locale
ja-JP
ft:lastEdition
2021-09-23
dita:mapPath
ja-JP/vqj1592443206677.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1148
Product Category
Software
Teradata Vantage

オープン カーソルをクローズし、カーソルがオープンしていた間に保持していたリソースをリリースします。

ANSI準拠

ANSI/ISO SQL:2011準拠。

必要な権限

なし。

呼び出し

実行可能形式。

ストアド プロシージャおよび埋め込みSQL。

構文

CLOSE cursor_name

構文要素

cursor_name
閉じる対象である、開いているカーソルの名前。

使用上の注意

結果セット カーソルは、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>を参照してください。