sp_describe_cursor_columns(Transact-SQL)

적용 대상:SQL Server

서버 커서의 결과 집합에 있는 열의 특성을 보고합니다.

Transact-SQL 구문 표기 규칙

구문

  
sp_describe_cursor_columns   
   [ @cursor_return = ] output_cursor_variable OUTPUT   
    { [ , [ @cursor_source = ] N'local' ,   
          [ @cursor_identity = ] N'local_cursor_name' ]   
    | [ , [ @cursor_source = ] N'global' ,   
          [ @cursor_identity = ] N'global_cursor_name' ]   
    | [ , [ @cursor_source = ] N'variable' ,   
          [ @cursor_identity = ] N'input_cursor_variable' ]   
   }  

인수

[ @cursor_return= ] output_cursor_variable OUTPUT
커서 출력을 수신하기 위해 선언된 커서 변수의 이름입니다. output_cursor_variable 기본값이 없는 커서이며 sp_describe_cursor_columns 호출될 때 커서와 연결해서는 안 됩니다. 반환된 커서는 스크롤 가능한 동적 읽기 전용 커서입니다.

[ @cursor_source= ] { N'local' | N'global' | N'variable' }
로컬 커서의 이름, 전역 커서 또는 커서 변수를 사용하여 보고되는 커서를 지정할지 여부를 지정합니다. 매개 변수는 nvarchar(30)입니다.

[ @cursor_identity= ] N'local_cursor_name'
LOCAL 키워드를 갖거나 LOCAL이 기본값인 DECLARE CURSOR 문에 의해 생성된 커서의 이름입니다. local_cursor_name nvarchar(128)입니다.

[ @cursor_identity= ] N'global_cursor_name'
GLOBAL 키워드를 갖거나 GLOBAL이 기본값인 DECLARE CURSOR 문에 의해 생성된 커서의 이름입니다. global_cursor_name nvarchar(128)입니다.

global_cursor_name ODBC 애플리케이션에서 연 다음 SQLSetCursorName을 호출하여 이름을 지정하는 API 서버 커서의 이름일 수도 있습니다.

[ @cursor_identity= ] N'input_cursor_variable'
열린 커서와 연관된 커서 변수의 이름입니다. input_cursor_variable nvarchar(128)입니다.

반환 코드 값

아니요

반환된 커서

sp_describe_cursor_columns 보고서를 Transact-SQL 커서 출력 매개 변수로 캡슐화합니다 . 이렇게 하면 Transact-SQL 일괄 처리, 저장 프로시저 및 트리거가 출력을 한 번에 한 행씩 사용할 수 있습니다. 이는 데이터베이스 API 함수에서 바로 프로시저를 호출할 수 없음을 의미하기도 합니다. 커서 출력 매개 변수는 프로그램 변수에 바인딩되어야 하지만 데이터베이스 API는 커서 매개 변수 또는 변수 바인딩 지원하지 않습니다.

다음 표에서는 sp_describe_cursor_columns 사용하여 반환된 커서의 형식을 보여 줍니다.

열 이름 데이터 형식 설명
column_name sysname (nullable) 결과 집합 열에 할당된 이름입니다. 열이 함께 제공되는 AS 절 없이 지정된 경우 열은 NULL입니다.
ordinal_position int 결과 집합의 맨 왼쪽 열에서 열의 상대 위치입니다. 첫 번째 열은 위치 0에 있습니다.
column_characteristics_flags int OLE DB의 DBCOLUMNFLAGS에 저장된 정보를 표시하는 비트 마스크입니다. 다음과 같이 하나 또는 여러 개를 조합하여 지정할 수 있습니다.

1 = 책갈피

2 = 고정 길이

4 = Null 허용

8 = 행 버전 관리

16 = 업데이트할 수 있는 열(FOR UPDATE 절이 없는 커서의 예상 열에 대해 설정하며 해당 열이 있는 경우 커서당 한 개씩만 사용할 수 있음)

비트 값이 결합되면 결합된 비트 값의 특성이 적용됩니다. 예를 들어 비트 값이 6이면 열은 고정 길이(2), nullable(4) 열입니다.
column_size int 이 열의 값에 대해 가능한 최대 크기입니다.
data_type_sql smallint 열의 SQL Server 데이터 형식을 나타내는 숫자입니다.
column_precision tinyint OLE DB의 bPrecision 값에 따라 열의 최대 전체 자릿수입니다.
column_scale tinyint OLE DB의 bScale 값에 따라 숫자 또는 10진수 데이터 형식의 소수점 오른쪽에 있는 숫자 수입니다.
order_position int 열이 결과 집합의 순서에 참여하는 경우 맨 왼쪽 열을 기준으로 순서 키에 있는 열의 위치입니다.
order_direction varchar(1)(nullable) A = 열이 순서 키에 있고 순서가 오름차순입니다.

D = 열이 순서 키에 있고 순서가 내림차순입니다.

NULL = 열이 순서 지정에 참여하지 않습니다.
hidden_column smallint 0 = 이 열이 선택 목록에 표시됩니다.

1 = 나중에 사용할 수 있습니다.
columnid int 기본 열의 열 ID입니다. 결과 집합 열이 식에서 작성된 경우 columnid는 -1입니다.
objectid int 열을 제공하는 개체 또는 기본 테이블의 개체 ID입니다. 결과 집합 열이 식에서 작성된 경우 objectid는 -1입니다.
dbid int 열을 제공하는 기본 테이블이 포함된 데이터베이스의 ID입니다. 결과 집합 열이 식에서 빌드된 경우 dbid는 -1입니다.
dbname sysname

(nullable)
열을 제공하는 기본 테이블을 포함한 데이터베이스의 이름입니다. 결과 집합 열이 식에서 작성된 경우 dbname은 NULL입니다.

설명

sp_describe_cursor_columns 각 커서의 이름 및 데이터 형식과 같이 서버 커서의 결과 집합에 있는 열의 특성을 설명합니다. sp_describe_cursor 사용하여 서버 커서의 전역 특성에 대해 설명합니다. 커서에서 참조하는 기본 테이블의 보고서에 sp_describe_cursor_tables 사용합니다. 연결에 표시되는 Transact-SQL 서버 커서의 보고서를 가져오려면 sp_cursor_list 사용합니다.

사용 권한

public 역할의 멤버 자격이 필요합니다.

다음 예제에서는 전역 커서를 열고 커서에 사용되는 열을 보고하는 데 사용합니다 sp_describe_cursor_columns .

USE AdventureWorks2022;  
GO  
-- Declare and open a global cursor.  
DECLARE abc CURSOR KEYSET FOR  
SELECT LastName  
FROM Person.Person;  
GO  
OPEN abc;  
  
-- Declare a cursor variable to hold the cursor output variable  
-- from sp_describe_cursor_columns.  
DECLARE @Report CURSOR;  
  
-- Execute sp_describe_cursor_columns into the cursor variable.  
EXEC master.dbo.sp_describe_cursor_columns  
    @cursor_return = @Report OUTPUT  
    ,@cursor_source = N'global'   
    ,@cursor_identity = N'abc';  
  
-- Fetch all the rows from the sp_describe_cursor_columns output cursor.  
FETCH NEXT from @Report;  
WHILE (@@FETCH_STATUS <> -1)  
BEGIN  
   FETCH NEXT from @Report;  
END  
  
-- Close and deallocate the cursor from sp_describe_cursor_columns.  
CLOSE @Report;  
DEALLOCATE @Report;  
GO  
-- Close and deallocate the original cursor.  
CLOSE abc;  
DEALLOCATE abc;  
GO  

참고 항목

커서
CURSOR_STATUS(Transact-SQL)
DECLARE CURSOR(Transact-SQL)
sp_describe_cursor(Transact-SQL)
sp_cursor_list(Transact-SQL)
sp_describe_cursor_tables(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)