CURSOR_STATUS(Transact-SQL)
지정된 매개 변수에 대해 프로시저가 커서 및 결과 집합을 반환했는지 저장 프로시저의 호출자가 확인할 수 있는 스칼라 함수입니다.
구문
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)
인수
'local'
커서의 원본이 로컬 커서 이름임을 나타내는 상수입니다.'cursor_name'
커서의 이름입니다. 커서 이름은 식별자에 대한 규칙을 따라야 합니다.'global'
커서의 원본이 전역 커서 이름임을 나타내는 상수입니다.'variable'
커서의 원본이 지역 변수임을 나타내는 상수입니다.'cursor_variable'
커서 변수의 이름입니다. 커서 변수는 cursor 데이터 형식을 사용하여 정의해야 합니다.
반환 형식
smallint
반환 값 |
커서 이름 |
커서 변수 |
---|---|---|
1 |
커서의 결과 집합에 최소 한 개의 행이 있습니다. 변경 감지 불능 커서와 키 집합 커서의 경우 결과 집합에 최소 한 개의 행이 있습니다. 동적 커서의 경우 결과 집합에는 0개, 1개 또는 그 이상의 행이 있습니다. |
이 변수에 할당된 커서가 열려 있습니다. 변경 감지 불능 커서와 키 집합 커서의 경우 결과 집합에 최소 한 개의 행이 있습니다. 동적 커서의 경우 결과 집합에는 0개, 1개 또는 그 이상의 행이 있습니다. |
0 |
커서의 결과 집합이 비어 있습니다.* |
이 변수에 할당된 커서는 열려 있지만 결과 집합은 확실히 비어 있습니다.* |
-1 |
커서가 닫혀 있습니다. |
이 변수에 할당된 커서가 닫혀 있습니다. |
-2 |
해당 사항이 없습니다. |
다음의 경우일 수 있습니다. 이전에 호출된 프로시저에서 이 OUTPUT 변수에 할당한 커서가 없습니다. 이전에 호출된 프로시저에서 이 OUTPUT 변수로 커서가 할당되었지만 프로시저가 완료되면서 닫혔습니다. 따라서 커서는 할당 취소되고 호출하는 프로시저로 반환되지 않습니다. 선언된 커서 변수에 할당된 커서가 없습니다. |
-3 |
지정된 이름의 커서가 없습니다. |
지정된 이름의 커서 변수가 없거나 있는 경우에는 아직 커서가 할당되지 않았습니다. |
*동적 커서는 절대 이 결과를 반환하지 않습니다.
예
다음 예에서는 CURSOR_STATUS 함수를 사용하여 커서를 열고 닫기 전후의 커서 상태를 표시합니다.
CREATE TABLE #TMP
(
ii int
)
GO
INSERT INTO #TMP(ii) VALUES(1)
INSERT INTO #TMP(ii) VALUES(2)
INSERT INTO #TMP(ii) VALUES(3)
GO
--Create a cursor.
DECLARE cur CURSOR
FOR SELECT * FROM #TMP
--Display the status of the cursor before and after opening
--closing the cursor.
SELECT CURSOR_STATUS('global','cur') AS 'After declare'
OPEN cur
SELECT CURSOR_STATUS('global','cur') AS 'After Open'
CLOSE cur
SELECT CURSOR_STATUS('global','cur') AS 'After Close'
--Remove the cursor.
DEALLOCATE cur
--Drop the table.
DROP TABLE #TMP
결과 집합은 다음과 같습니다.
선언 이후
---------------
-1
열기 이후
----------
1
닫기 이후
-----------
-1