sp_describe_cursor_columns(Transact-SQL)
적용 대상: SQL Server
서버 커서의 결과 집합에 있는 열의 특성을 보고합니다.
구문
sp_describe_cursor_columns
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
인수
[ @cursor_return = ] cursor_return OUTPUT
커서 출력을 받을 선언된 커서 변수의 이름입니다. @cursor_return 기본값이 없는 int 형식의 OUTPUT 매개 변수이며 호출될 때 sp_describe_cursor_columns
커서와 연결해서는 안 됩니다. 반환된 커서는 스크롤 가능한 동적 읽기 전용 커서입니다.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
로컬 커서의 이름, 전역 커서 또는 커서 변수를 사용하여 보고되는 커서를 지정할지 여부를 지정합니다. @cursor_source 기본값이 없는 nvarchar(30)입니다.
[ @cursor_identity = ] N'cursor_identity'
문으로 만든 커서의 이름입니다 DECLARE CURSOR
. @cursor_identity nvarchar(128)이며 기본값은 없습니다.
커서에 키워드가
LOCAL
있거나 기본값LOCAL
인 경우 @cursor_identity .local
커서에 키워드가
GLOBAL
있거나 기본값GLOBAL
인 경우 @cursor_identity .global
@cursor_identity ODBC 애플리케이션에서 연 다음 호출SQLSetCursorName
을 통해 이름을 지정하는 API 서버 커서의 이름일 수도 있습니다.그렇지 않으면 @cursor_identity 열린 커서와 연결된 커서 변수의 이름입니다.
반환 코드 값
없음
반환된 커서
sp_describe_cursor_columns
는 보고서를 Transact-SQL cursor
출력 매개 변수로 캡슐화합니다. 이렇게 하면 Transact-SQL 일괄 처리, 저장 프로시저 및 트리거가 출력을 한 번에 한 행씩 사용할 수 있습니다. 이는 또한 데이터베이스 API 함수에서 프로시저를 직접 호출할 수 없음을 의미합니다. 출력 매개 변수는 cursor
프로그램 변수에 바인딩되어야 하지만 데이터베이스 API는 바인딩 cursor
매개 변수 또는 변수를 지원하지 않습니다.
다음 표에서는 .를 사용하여 sp_describe_cursor_columns
반환된 커서의 형식을 보여 줍니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
column_name |
sysname | 결과 집합 열에 할당된 이름입니다. 열은 NULL 함께 제공되는 AS 절 없이 열을 지정한 경우입니다.Nullable. |
ordinal_position |
int | 결과 집합의 맨 왼쪽 열에서 열의 상대 위치입니다. 첫 번째 열은 위치에 0 있습니다. |
column_characteristics_flags |
int | OLE DB에 DBCOLUMNFLAGS 저장된 정보를 나타내는 비트 마스크입니다. 다음 값 중 하나 또는 조합일 수 있습니다.1 = 책갈피2 = 고정 길이4 = Nullable8 = 행 버전 관리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) | A = 열이 순서 키에 있고 순서가 오름차순입니다.D = 열이 순서 키에 있고 순서가 내림차순입니다.NULL = 열이 순서 지정에 참여하지 않습니다.Nullable. |
hidden_column |
smallint | 0 = 이 열이 선택 목록에 나타납니다.1 = 나중에 사용할 수 있습니다. |
columnid |
int | 기본 열의 열 ID입니다. 결과 집합 열이 식 columnid 에서 빌드된 경우는 다음과 입니다 -1 . |
objectid |
int | 열을 제공하는 개체 또는 기본 테이블의 개체 ID입니다. 결과 집합 열이 식 objectid 에서 빌드된 경우는 다음과 입니다 -1 . |
dbid |
int | 열을 제공하는 기본 테이블이 포함된 데이터베이스의 ID입니다. 결과 집합 열이 식 dbid 에서 빌드된 경우는 다음과 입니다 -1 . |
dbname |
sysname | 열을 제공하는 기본 테이블을 포함한 데이터베이스의 이름입니다. 결과 집합 열이 식에서 작성된 경우 dbname은 .입니다 NULL .Nullable. |
설명
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