적용 대상:SQL 서버
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 데이터베이스
제출된 커서 문 또는 일괄 처리에 대한 계획을 컴파일한 다음 커서를 만들고 채웁니다.
sp_cursorprepexec의 함수와 sp_cursorprepare.의 sp_cursorexecute 함수를 결합합니다. 이 프로시저는 TDS(테이블 형식 데이터 스트림) 패킷을 지정하여 ID = 5 호출됩니다.
구문
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
인수
중요하다
확장 저장 프로시저에 대한 인수는 구문 섹션에 설명된 대로 특정 순서로 입력해야 합니다. 매개 변수를 순서대로 입력하면 오류 메시지가 발생합니다.
준비된 핸들
SQL Server에서 준비된 핸들 식별자를 생성했습니다. 준비된 핸들 매개 변수가 필요하며 int를 반환합니다.
cursor
SQL Server에서 생성된 커서 식별자입니다.
커서 매개 변수는 이 커서sp_cursorfetch에 대해 작동하는 모든 후속 프로시저에서 제공해야 하는 필수 매개 변수입니다.
params
매개 변수가 있는 문을 식별합니다. 변수의 매개 변수 정의는 문의 매개 변수 표식으로 대체됩니다. params 매개 변수가 필요합니다. 매개 변수를 지정하면 매개 변수는ntext, nchar 또는 nvarchar 입력 값을 호출합니다.
참고 항목
문이 매개 변수화되고 scrollopt PARAMETERIZED_STMT 값이 ON일 때 ntext 문자열을 입력 값으로 사용합니다.
statement
커서 결과 집합을 정의합니다. 문 매개 변수가 필요하며 ntext, nchar 또는 nvarchar 입력 값을 호출합니다.
참고 항목
문 값을 지정하는 규칙은 문 문자열 데이터 형식이 ntext여야 한다는 점을 제외하고 sp_cursoropen 것과 동일합니다.
options
커서 결과 집합 열의 설명을 반환하는 선택적 매개 변수입니다. options 매개 변수에는 다음 int 입력 값이 필요합니다.
| 값 | 설명 |
|---|---|
0x0001 |
RETURN_METADATA |
scrollopt
스크롤 옵션입니다. scrollopt 매개 변수는 선택 사항입니다. 지정한 경우 scrollopt 에는 다음 int 입력 값 중 하나가 필요합니다.
| 값 | 설명 |
|---|---|
0x0001 |
KEYSET |
0x0002 |
DYNAMIC |
0x0004 |
FORWARD_ONLY |
0x0008 |
STATIC |
0x10 |
FAST_FORWARD |
0x1000 |
PARAMETERIZED_STMT |
0x2000 |
AUTO_FETCH |
0x4000 |
AUTO_CLOSE |
0x8000 |
CHECK_ACCEPTED_TYPES |
0x10000 |
KEYSET_ACCEPTABLE |
0x20000 |
DYNAMIC_ACCEPTABLE |
0x40000 |
FORWARD_ONLY_ACCEPTABLE |
0x80000 |
STATIC_ACCEPTABLE |
0x100000 |
FAST_FORWARD_ACCEPTABLE |
요청된 옵션이 문으로 정의된 커서에 적합하지 않을 수 있으므로 이 매개 변수는 입력 및 출력의 역할을 합니다. 이러한 경우 SQL Server는 적절한 형식을 할당하고 이 값을 수정합니다.
ccopt
동시성 제어 옵션입니다. ccopt 매개 변수는 선택 사항입니다. 지정된 경우 ccopt 매개 변수에는 다음 int 입력 값 중 하나가 필요합니다.
| 값 | 설명 |
|---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS(이전에는 LOCKCC라고 함) |
0x0004 |
OPTIMISTIC(이전에 OPTCC라고 함) |
0x0008 |
OPTIMISTIC(이전에는 OPTCCVAL이라고 함) |
0x2000 |
ALLOW_DIRECT |
0x4000 |
UPDT_IN_PLACE |
0x8000 |
CHECK_ACCEPTED_OPTS |
0x10000 |
READ_ONLY_ACCEPTABLE |
0x20000 |
SCROLL_LOCKS_ACCEPTABLE |
0x40000 |
OPTIMISTIC_ACCEPTABLE |
0x80000 |
OPTIMISITC_ACCEPTABLE |
scrollopt와 마찬가지로 SQL Server는 요청된 값과 다른 값을 할당할 수 있습니다.
rowcount
사용할 페치 버퍼 행의 수를 나타내는 선택적 매개 변수입니다 AUTO_FETCH. 기본값은 20개 행입니다.
행 수 매개 변수는 입력 값과 반환 값으로 할당된 경우 다르게 동작합니다.
| 입력 값으로 | 반환 값으로 |
|---|---|
| AUTO_FETCH FAST_FORWARD 커서 행 개수 로 지정된 경우 페치 버퍼에 배치할 행 수를 나타냅니다. | 결과 집합의 행 수를 나타냅니다.
scrolloptAUTO_FETCH 값을 지정하면 행 개수는 페치 버퍼로 페치된 행 수를 반환합니다. |
parameter_name
매개 변수 매개 변수에 정의된 대로 하나 이상의 매개 변수 이름을 지정 합니다 . 매개 변수에 포함된 모든 매개 변수에 대해 매개 변수가 제공되어야 합니다. 매개 변수의 Transact-SQL 문이나 매개 변수의 일괄 처리에 정의된 매개 변수가 없는 경우에는 이 매개 변수가 필요하지 않습니다.
반환 코드 값
params 값이 반환NULL되면 문이 매개 변수화되지 않습니다.
예제
이 예제에서는 .의 sp_cursorprepexec사용을 보여 줍니다. 이름이 "커비"인 모든 레코드를 반환하는 데이터베이스의 Person 테이블에 대해 AdventureWorks2025 쿼리를 실행합니다.
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXECUTE sp_cursorprepexec
@prep_handle OUTPUT,
@cursor OUTPUT,
N'@fName nvarchar(100)',
N'SELECT FirstName, LastName FROM Person.Person WHERE FirstName = @fName',
@scrollopt,
@ccopt,
@rowcnt OUTPUT,
'Kirby';
EXECUTE sp_cursorfetch @cursor;