sp_cursor_list(Transact-SQL)

적용 대상:SQL Server

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

Transact-SQL 구문 표기 규칙

구문

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

인수

[ @cursor_return= ] cursor_variable_nameOUTPUT
선언된 커서 변수의 이름입니다. cursor_variable_name 커서이며 기본값은 없습니다. 커서는 스크롤 가능한 동적 읽기 전용 커서입니다.

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

Description
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 = 로컬

2 = 전역
status smallint CURSOR_STATUS 시스템 함수에서 보고한 값과 동일한 값입니다.

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

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

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

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

-3 = 지정된 이름의 커서 또는 커서 변수가 없거나 커서 변수에 커서가 할당되지 않았습니다.
모델 smallint 1 = 둔감(또는 정적)

2 = 키 집합

3 = 동적

4 = 빨리 감기
동시성 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 = 닫기

7 = 할당 취소
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  

참고 항목

시스템 저장 프로시저(Transact-SQL)