다음을 통해 공유


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

커서의 결과 집합에 최소 한 개의 행이 있습니다.

변경 감지 불능 커서와 키 집합 커서의 경우 결과 집합에 최소 한 개의 행이 있습니다.

동적 커서의 경우 결과 집합에는 0개, 1개 또는 그 이상의 행이 있습니다.

이 변수에 할당된 커서가 열려 있습니다.

변경 감지 불능 커서와 키 집합 커서의 경우 결과 집합에 최소 한 개의 행이 있습니다.

동적 커서의 경우 결과 집합에는 0개, 1개 또는 그 이상의 행이 있습니다.

0

커서의 결과 집합이 비어 있습니다.*

이 변수에 할당된 커서는 열려 있지만 결과 집합은 확실히 비어 있습니다.*

-1

커서가 닫혀 있습니다.

이 변수에 할당된 커서가 닫혀 있습니다.

-2

사용할 수 없음

다음의 경우일 수 있습니다.

이전에 호출된 프로시저에서 이 OUTPUT 변수에 할당한 커서가 없습니다.

이전에 호출된 프로시저에서 이 OUTPUT 변수로 커서가 할당되었지만 프로시저가 완료되면서 닫혔습니다. 따라서 커서는 할당 취소되고 호출하는 프로시저로 반환되지 않습니다.

선언된 커서 변수에 할당된 커서가 없습니다.

-3

지정된 이름의 커서가 없습니다.

지정된 이름의 커서 변수가 없거나 있는 경우에는 아직 커서가 할당되지 않았습니다.

*동적 커서는 절대 이 결과를 반환하지 않습니다.

다음 예에서는 lake_list라는 프로시저를 만들고 lake_list를 실행하여 얻은 출력으로 CURSOR_STATUS를 확인합니다.

[!참고] 이 예는 만들어지지 않은 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 지원 받기