次の方法で共有


CURSOR_STATUS (Transact-SQL)

指定されたパラメータでプロシージャがカーソルと結果セットを返したかどうかを、ストアド プロシージャの呼び出し元が判断するためのスカラ関数です。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

CURSOR_STATUS 
          ( 
               { 'local' , 'cursor_name' } 
          | { 'global' , 'cursor_name' } 
          | { 'variable' , 'cursor_variable' } 
          ) 

引数

'local'

カーソルのソースがローカル カーソル名であることを示す定数です。

'cursor_name'

カーソルの名前です。カーソル名は、識別子の規則に従っている必要があります。

'global'

カーソルのソースがグローバル カーソル名であることを示す定数です。

'variable'

カーソルのソースがローカル変数であることを示す定数です。

'cursor_variable'

カーソル変数の名前です。カーソル変数は、cursor 型を使用して定義する必要があります。

戻り値の型

smallint

戻り値 カーソル名 カーソル変数

1

カーソルの結果セットは 1 つ以上の行で構成されます。

状態非依存のキーセット カーソルの場合、結果セットは 1 つ以上の行で構成されます。

動的カーソルの場合、結果セットは 0、1、または複数の行で構成されます。

この変数に割り当てられているカーソルはオープンしています。

状態非依存のキーセット カーソルの場合、結果セットは 1 つ以上の行で構成されます。

動的カーソルの場合、結果セットは 0、1、または複数の行で構成されます。

0

カーソルの結果セットは空です。*

この変数に割り当てられているカーソルはオープンしていますが、結果セットは完全に空です。*

-1

カーソルはクローズしています。

この変数に割り当てられているカーソルはクローズしています。

-2

適用なし。

次の値をとります。

以前に呼び出されたプロシージャによって、この OUTPUT 変数にカーソルは割り当てられませんでした。

以前に呼び出されたプロシージャによって、この OUTPUT 変数にカーソルが割り当てられましたが、プロシージャの終了時点ではカーソルはクローズした状態でした。このため、カーソルの割り当てが解除され、呼び出し元のプロシージャに返されません。

宣言されたカーソル変数にはカーソルが割り当てられていません。

-3

指定された名前のカーソルは存在しません。

指定された名前のカーソル変数は存在しません。または、存在してもカーソルがまだ割り当てられていません。

* 動的カーソルがこのような結果を返すことはありません。

この例では、lake_list という名前のプロシージャを作成し、lake_list を実行して得られる出力を CURSOR_STATUS の確認として使用します。

ms177609.note(ja-jp,SQL.90).gifメモ :
この例では、まだ作成されていない check_authority という名前のプロシージャを使用します。
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'lake_list' AND type = 'P')
   DROP PROCEDURE lake_list
GO
CREATE PROCEDURE lake_list
   ( @region varchar(30),
     @size integer,
     @lake_list_cursor CURSOR VARYING OUTPUT )
AS 
BEGIN
   DECLARE @ok SMALLINT
   EXECUTE check_authority @region, username, @ok OUTPUT
   IF @ok = 1
      BEGIN
      SET @lake_list_cursor = CURSOR LOCAL SCROLL FOR
         SELECT name, lat, long, size, boat_launch, cost
         FROM lake_inventory
         WHERE locale = @region AND area >= @size
         ORDER BY name
      OPEN @lake_list_cursor
      END
END
DECLARE @my_lakes_cursor CURSOR
DECLARE @my_region char(30)
SET @my_region = 'Northern Ontario'
EXECUTE lake_list @my_region, 500, @my_lakes_cursor OUTPUT
IF Cursor_Status('variable', '@my_lakes_cursor') <= 0
   BEGIN
   /* Some code to tell the user that there is no list of
   Lakes. */
   END
ELSE
   BEGIN
      FETCH @my_lakes_cursor INTO -- Destination here
      -- Continue with other code here.
END

参照

関連項目

カーソル関数 (Transact-SQL)
データ型 (Transact-SQL)

その他の技術情報

オブジェクト名としての識別子の使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手