Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Compila a instrução do cursor ou o lote em um plano de execução, mas não cria o cursor. A instrução compilada pode ser usada posteriormente por sp_cursorexecute. Este procedimento, juntamente com sp_cursorexecute, tem a mesma função que sp_cursoropen, mas é dividido em duas fases.
sp_cursorprepare é invocado especificando ID = 3 em um pacote de fluxo de dados tabular (TDS).
Transact-SQL convenções de sintaxe
Sintaxe
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
prepared_handle
Um identificador de handle preparado gerado pelo SQL Server que retorna um valor int.
prepared_handle é então fornecido a um procedimento sp_cursorexecute para abrir um cursor. Depois que um identificador é criado, ele existe até que você saia ou até que você o remova explicitamente por meio de um procedimento sp_cursorunprepare.
params
Identifica instruções parametrizadas. Os parâmetros definição de variáveis são substituídos por marcadores de parâmetros na declaração.
params é um parâmetro obrigatório que requer um ntext, ncharou nvarchar valor de entrada. Insira um valor NULL se a instrução não estiver parametrizada.
Use uma cadeia de caracteres ntext como o valor de entrada quando stmt for parametrizado e o valor scrollopt PARAMETERIZED_STMT for ON.
stmt
Define o conjunto de resultados do cursor. O parâmetro stmt é necessário e exige um ntext, **nchar ou nvarchar valor de entrada.
As regras para especificar o valor de stmt são as mesmas que sp_cursoropen, com a exceção de que o tipo de dados stmt string deve ser ntext.
opções
Retorna uma descrição das colunas do conjunto de resultados do cursor. As opções parâmetro é int, com um padrão de NULL. Quando definido como 0x0001, significa RETURN_METADATA.
scrollopt
Opção de rolagem. O parâmetro scrollopt é um parâmetro opcional que requer um dos seguintes valores de entrada int.
| Valor | Descrição |
|---|---|
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 |
Como o valor solicitado pode não ser apropriado para o cursor definido por stmt, esse parâmetro serve como entrada e saída. Nesses casos, o SQL Server atribui um valor apropriado.
CCOPT
Opção de controle de simultaneidade. ccopt é um parâmetro opcional que requer um dos seguintes valores de entrada int.
| Valor | Descrição |
|---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (anteriormente conhecido como LOCKCC) |
0x0004 |
OPTIMISTIC (anteriormente conhecido como OPTCC) |
0x0008 |
OPTIMISTIC (anteriormente conhecido como 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 |
Assim como de rolagem, o SQL Server pode atribuir um valor diferente do solicitado.
Comentários
O parâmetro de status RPC é um dos seguintes valores:
| Valor | Descrição |
|---|---|
0 |
Sucesso |
0x0001 |
Fracasso |
1FF6 |
Não foi possível retornar metadados. Nota: A razão para isso é que a instrução não produz um conjunto de resultados; por exemplo, é uma instrução INSERT ou DDL. |
Exemplos
O código a seguir é um exemplo de uso de sp_cursorprepare e sp_cursorexecute:
DECLARE @handle AS INT, @p5 AS INT, @p6 AS INT;
EXECUTE sp_cursorprepare
@handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 OUTPUT,
@p6 OUTPUT;
DECLARE @p1 AS INT;
SET @P1 = @handle;
DECLARE @p2 AS INT;
DECLARE @p3 AS INT;
DECLARE @p4 AS INT;
SET @P6 = 4;
EXECUTE sp_cursorexecute
@p1,
@p2 OUTPUT,
@p3 OUTPUT,
@p4 OUTPUT,
@p5 OUTPUT,
@p6;
EXECUTE sp_cursorfetch @P2;
EXECUTE sp_cursorunprepare @handle;
EXECUTE sp_cursorclose @p2;
Quando stmt é parametrizado e o valor scrolloptPARAMETERIZED_STMT é ON, o formato da string está na seguinte forma:
<parameter_name> <data_type> [ ,... n ]