다음을 통해 공유


sp_cursor_list(Transact-SQL)

적용 대상: SQL Server

연결에 대해 현재 열려 있는 서버 커서의 특성을 보고합니다.

Transact-SQL 구문 표기 규칙

구문

sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

인수

[ @cursor_return = ] cursor_return OUTPUT

선언된 커서 변수의 이름입니다. @cursor_return CURSOR 형식의 OUTPUT 매개 변수입니다. 커서는 스크롤 가능한 동적 읽기 전용 커서입니다.

[ @cursor_scope = ] cursor_scope

보고할 커서 수준을 지정합니다. @cursor_scope 기본값 없이 int이며 이러한 값 중 하나일 수 있습니다.

설명
1 모든 로컬 커서를 보고합니다.
2 모든 전역 커서를 보고합니다.
3 로컬 커서와 전역 커서를 모두 보고합니다.

반환 코드 값

없음

반환된 커서

sp_cursor_list 는 보고서를 결과 집합이 아닌 Transact-SQL 커서 출력 매개 변수로 반환합니다. 이렇게 하면 Transact-SQL 일괄 처리, 저장 프로시저 및 트리거가 한 번에 하나의 행 출력으로 작동할 수 있습니다. 또한 이 프로시저는 데이터베이스 API 함수에서 직접 호출할 수 없음을 의미합니다. 커서 출력 매개 변수는 프로그램 변수에 바인딩되어야 하지만 데이터베이스 API는 커서 매개 변수 또는 변수 바인딩을 지원하지 않습니다.

이 형식은 .에서 반환 sp_cursor_list하는 커서의 형식입니다. 커서의 형식은 .에서 반환 sp_describe_cursor하는 형식과 동일합니다.

열 이름 데이터 형식 설명
reference_name sysname 커서를 참조하는 데 사용되는 이름입니다. 커서에 대한 참조가 문에 DECLARE CURSOR 지정된 이름을 통해 제공된 경우 참조 이름은 커서 이름과 동일합니다. 커서에 대한 참조가 변수를 통해 이루어지는 경우 참조 이름은 커서 변수의 이름이 됩니다.
cursor_name sysname 문의 커서 이름입니다 DECLARE CURSOR . SQL Server에서 커서 변수를 커서로 설정하여 커서를 만든 경우 커서 변수 cursor_name 의 이름을 반환합니다. 이전 릴리스의 경우 이 출력 열은 시스템에서 생성한 이름을 반환합니다.
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint 시스템 함수에서 보고한 값과 CURSOR_STATUS 동일한 값:

1 = 커서 이름 또는 변수에서 참조하는 커서가 열려 있습니다. 커서가 민감하지 않거나 정적 또는 키 집합인 경우 하나 이상의 행입니다. 커서가 동적이면 결과 집합에 0개 이상의 행이 있습니다.

0 = 커서 이름 또는 변수에서 참조하는 커서가 열려 있지만 행이 없습니다. 동적 커서는 이 값을 반환하지 않습니다.

-1 = 커서 이름 또는 변수에서 참조하는 커서가 닫혔습니다.

-2 = 커서 변수에만 적용됩니다. 변수에 할당된 커서가 없습니다. 매개 변수가 OUTPUT 변수에 커서를 할당했지만 저장 프로시저가 반환하기 전에 커서를 닫았을 수 있습니다.

-3 = 지정된 이름의 커서 또는 커서 변수가 없거나 커서 변수에 할당된 커서가 없습니다.
model smallint 1 = 민감하지 않거나 정적
2 = 키 집합
3 = 동적
4= 빠른 전달
concurrency smallint 1 = 읽기 전용
2 = 스크롤 잠금
3 = 낙관적
scrollable smallint 0 = 전달 전용
1 = 스크롤 가능
open_status smallint 0 = 닫힘
1 = 열기
cursor_rows int 결과 집합의 정규화 행 수입니다. 자세한 내용은 @@CURSOR_ROWS 참조하세요.
fetch_status smallint 이 커서의 마지막 인출 상태입니다. 자세한 내용은 @@FETCH_STATUS 참조하세요.

0 = 페치 성공.
-1 = 페치에 실패했거나 커서의 범위를 벗어났습니다.
-2 = 요청된 행이 없습니다.
-9 = 커서에 인출이 없습니다.
column_count smallint 커서 결과 집합의 열 수입니다.
row_count smallint 커서의 마지막 조작에 의해 영향을 받는 행의 수입니다. 자세한 내용은 @@ROWCOUNT 참조하세요.
last_operation smallint 커서에서 수행된 마지막 작업:

0 = 커서에서 작업이 수행되지 않았습니다.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
cursor_handle int 서버 범위 내에서 커서를 식별하는 고유 값입니다.

설명

sp_cursor_list 는 연결에서 연 현재 서버 커서 목록을 생성하고 커서의 스크롤 가능성 및 업데이트 가능성과 같이 각 커서에 대한 전역 특성을 설명합니다. 다음으로 나열된 sp_cursor_list 커서는 다음과 같습니다.

  • Transact-SQL 서버 커서.

  • 그런 다음 커서 이름을 지정하기 위해 호출 SQLSetCursorName 되는 ODBC 애플리케이션에서 연 API 서버 커서입니다.

커서에서 반환된 결과 집합의 특성에 대한 설명에 사용합니다 sp_describe_cursor_columns . 커서에서 참조하는 기본 테이블의 보고서에 사용합니다 sp_describe_cursor_tables . sp_describe_cursor 는 지정된 커서에 대해서만 동일한 정보를 sp_cursor_list보고합니다.

사용 권한

실행 권한은 기본적으로 공용 역할로 설정됩니다.

예제

다음 예제에서는 전역 커서를 열고 커서의 특성을 보고하는 데 사용합니다 sp_cursor_list .

USE AdventureWorks2022;
GO

-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET
FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';

OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list
    @cursor_return = @Report OUTPUT,
    @cursor_scope = 2;

-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    FETCH NEXT from @Report;
END

-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO