sp_describe_cursor_tables(Transact-SQL)
적용 대상: SQL Server
서버 커서에서 참조하는 개체 또는 기본 테이블을 보고합니다.
구문
sp_describe_cursor_tables
[ @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 기본값이 없는 OUTPUT 커서이며 호출될 때 sp_describe_cursor_tables
커서와 연결해서는 안 됩니다. 반환된 커서는 스크롤 가능한 동적 읽기 전용 커서입니다.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
로컬 커서의 이름, 전역 커서 또는 커서 변수를 사용하여 보고되는 커서를 지정할지 여부를 지정합니다. @cursor_source 기본값이 없는 nvarchar(30)입니다.
[ @cursor_identity = ] N'cursor_identity'
@cursor_source local
경우 @cursor_identity 키워드가 있거나 기본값LOCAL
인 DECLARE CURSOR
문에서 만든 커서의 LOCAL
이름입니다.
@cursor_source global
경우 @cursor_identity 키워드가 있거나 기본값GLOBAL
인 DECLARE CURSOR
문에서 만든 커서의 GLOBAL
이름입니다. @cursor_identity 호출하여 커서 이름을 지정한 ODBC 애플리케이션에서 연 API 서버 커서SQLSetCursorName
의 이름일 수도 있습니다.
@cursor_source variable
경우 @cursor_identity 열린 커서와 연결된 커서 변수의 이름입니다.
@cursor_identity nvarchar(128)이며 기본값은 없습니다.
반환 코드 값
없음
반환된 커서
sp_describe_cursor_tables
는 보고서를 Transact-SQL 커서 출력 매개 변수로 캡슐화합니다 . 이렇게 하면 Transact-SQL 일괄 처리, 저장 프로시저 및 트리거가 출력을 한 번에 한 행씩 사용할 수 있습니다. 이는 API 함수에서 직접 프로시저를 호출할 수 없음을 의미합니다. 커서 출력 매개 변수는 프로그램 변수에 바인딩되어야 하지만 API는 바인딩 커서 매개 변수 또는 변수를 지원하지 않습니다.
다음 표에서는 .에서 반환 sp_describe_cursor_tables
하는 커서의 형식을 보여 줍니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
table_owner |
sysname | 테이블 소유자의 사용자 ID입니다. |
table_name |
sysname | 개체 또는 기본 테이블의 이름입니다. SQL Server에서 서버 커서는 항상 기본 테이블이 아닌 사용자 지정 개체를 반환합니다. |
optimizer_hint |
smallint | 다음 옵션 중 하나 이상으로 구성된 비트맵입니다. 1 = 행 수준 잠금( ROWLOCK )4 = 페이지 수준 잠금( PAGELOCK )8 = 테이블 잠금( TABLOCK )16 = 배타적 테이블 잠금( TABLOCKX )32 = 업데이트 잠금( UPDLOCK )64 = 잠금 없음( NOLOCK )128 = 빠른 첫 행 옵션( FASTFIRST )4096 = ( HOLDLOCK )와 함께 DECLARE CURSOR 사용할 때 반복 가능한 의미 체계를 읽습니다.여러 옵션이 제공되면 시스템에서 가장 제한적인 옵션을 사용합니다. 그러나 sp_describe_cursor_tables 쿼리에 지정된 플래그를 표시합니다. |
lock_type |
smallint | 해당 커서의 기초가 되는 각 기본 테이블에 대해 명시적 또는 암시적으로 요청된 스크롤 잠금 유형입니다. 값은 다음 옵션 중 하나일 수 있습니다. 0 = 없음 1 = 공유됨 3 = 업데이트 |
server_name |
sysname, nullable | 테이블이 있는 연결된 서버의 이름입니다. NULL 언제 OPENQUERY 사용되나요 OPENROWSET ? |
objectid |
int | 테이블의 개체 ID입니다. 사용 시 OPENQUERY OPENROWSET 0입니다. |
dbid |
int | 테이블이 있는 데이터베이스의 ID입니다. 사용 시 OPENQUERY OPENROWSET 0입니다. |
dbname |
sysname, nullable | 테이블이 있는 데이터베이스의 이름입니다. NULL 언제 OPENQUERY 사용되나요 OPENROWSET ? |
설명
sp_describe_cursor_tables
는 서버 커서에서 참조하는 기본 테이블을 설명합니다. 커서에서 반환된 결과 집합의 특성에 대한 설명을 보려면 .를 사용합니다 sp_describe_cursor_columns
. 커서의 스크롤 가능성 및 업데이트 가능성과 같은 커서의 전역 특성에 대한 설명을 보려면 .를 사용합니다 sp_describe_cursor
. 연결에 표시되는 Transact-SQL 서버 커서의 보고서를 가져오려면 다음을 사용합니다 sp_cursor_list
.
사용 권한
public 역할의 멤버 자격이 필요합니다.
예제
다음 예제에서는 전역 커서를 열고 커서에서 참조하는 테이블을 보고하는 데 사용합니다 sp_describe_cursor_tables
.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
GO
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_tables.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_tables into the cursor variable.
EXEC master.dbo.sp_describe_cursor_tables
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_tables 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_tables.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO