다음을 통해 공유


sp_cursorprepare(Transact-SQL)

적용 대상: SQL Server

커서 문 또는 일괄 처리를 실행 계획으로 컴파일하지만 커서를 만들지는 않습니다. 컴파일된 문은 나중에 .에서 sp_cursorexecute사용할 수 있습니다. 이 프로시저와 결합 sp_cursorexecute된 이 프로시저는 함수와 동일 sp_cursoropen하지만 두 단계로 분할됩니다. sp_cursorprepare 는 TDS(테이블 형식 데이터 스트림) 패킷을 지정하여 ID = 3 호출됩니다.

Transact-SQL 구문 표기 규칙

구문

sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
    [ , scrollopt [ , ccopt ] ]
[ ; ]

인수

prepared_handle

int 값을 반환하는 SQL Server에서 생성된 준비된 handle 식별자입니다.

그런 다음 prepared_handle 커서를 sp_cursorexecute 열기 위해 프로시저에 제공됩니다. 핸들이 만들어지면 로그아웃할 때까지 또는 프로시저를 통해 sp_cursorunprepare 명시적으로 제거할 때까지 존재합니다.

params

매개 변수가 있는 문을 식별합니다. 변수의 매개 변수 정의는 문의 매개 변수 표식으로 대체됩니다. params는 ntext, nchar 또는 nvarchar 입력 값을 호출하는 필수 매개 변수입니다. NULL 문이 매개 변수화되지 않은 경우 값을 입력합니다.

stmt매개 변수화되고 scrollopt PARAMETERIZED_STMT 값이 ON인 경우 ntext 문자열을 입력 값으로 사용합니다.

stmt

커서 결과 집합을 정의합니다. stmt 매개 변수가 필요하며 ntext, **nchar 또는 nvarchar 입력 값을 호출합니다.

stmt 값을 지정하는 규칙은 stmt 문자열 데이터 형식이 ntext여야 한다는 점을 제외하고 동일합니다sp_cursoropen.

options

커서 결과 집합 열에 대한 설명을 반환합니다. options 매개 변수는 기본값NULL인 int입니다. 로 0x0001설정하면 의미합니다 RETURN_METADATA.

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

요청된 값이 stmt정의된 커서에 적합하지 않을 수 있으므로 이 매개 변수는 입력 및 출력의 역할을 합니다. 이러한 경우 SQL Server는 적절한 값을 할당합니다.

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 OPTIMISTIC_ACCEPTABLE

scrollpt마찬가지로 SQL Server는 요청된 값과 다른 값을 할당할 수 있습니다.

설명

RPC 상태 매개 변수는 다음 값 중 하나입니다.

설명
0 Success
0x0001 실패
1FF6 메타데이터를 반환할 수 없습니다.

참고: 그 이유는 문에서 결과 집합을 생성하지 않기 때문입니다. 예를 들어 INSERT DDL 문입니다.

예제

다음 코드는 사용 sp_cursorpreparesp_cursorexecute사용의 예입니다.

DECLARE @handle INT, @p5 INT, @p6 INT;

EXEC sp_cursorprepare @handle OUTPUT,
    N'@dbid int',
    N'select * from sys.databases where database_id < @dbid',
    1,
    @p5 OUTPUT,
    @p6 OUTPUT;

DECLARE @p1 INT
SET @P1 = @handle;

DECLARE @p2 INT;
DECLARE @p3 INT;
DECLARE @p4 INT;

SET @P6 = 4;

EXEC sp_cursorexecute @p1,
    @p2 OUTPUT,
    @p3 OUTPUT,
    @p4 OUTPUT,
    @p5 OUTPUT,
    @p6;

EXEC sp_cursorfetch @P2;
EXEC sp_cursorunprepare @handle;
EXEC sp_cursorclose @p2;

stmt가 매개 변수화되고 scrollopt PARAMETERIZED_STMT 값이면 ON문자열 형식은 다음 형식입니다.

<parameter_name> <data_type> [ ,... n ]