sp_cursorprepare (Transact-SQL)
Aplica-se a:SQL Server
Compila a instrução de cursor ou processa em lotes em um plano de execução, mas não cria o cursor. A instrução compilada pode ser usada posteriormente por sp_cursorexecute. Esse 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 TDS (fluxo de dados tabular).
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argumentos
prepared_handle
Um identificador de identificador preparado gerado por SQL Server que retorna um valor inteiro.
Observação
prepared_handle é fornecido posteriormente a um procedimento sp_cursorexecute para abrir um cursor. Quando um identificador é criado, ele existe até que você faça logoff ou remova-o explicitamente por meio de um procedimento sp_cursorunprepare.
params
Identifica instruções parametrizadas. A definição de parâmetros de variáveis é substituída por marcadores de parâmetro na instrução . params é um parâmetro obrigatório que chama um valor de entrada ntext, nchar ou nvarchar . Insira um valor NULL se a instrução não for parametrizada.
Observação
Use uma cadeia de caracteres ntext como o valor de entrada quando stmt for parametrizado e o valor PARAMETERIZED_STMT scrollopt for ON.
Stmt
Define o conjunto de resultados do cursor. O parâmetro stmt é necessário e chama um valor de entrada ntext, nchar ou nvarchar .
Observação
As regras para especificar o valor stmt são as mesmas para sp_cursoropen, com a exceção de que o tipo de dados stmt string deve ser ntext.
options
Um parâmetro opcional que retorna uma descrição das colunas do conjunto de resultados de cursor. options requer o seguinte valor de entrada int .
Valor | Descrição |
---|---|
0x0001 | RETURN_METADATA |
Scrollopt
Opção de rolagem. 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 | OPTIMISITC_ACCEPTABLE |
Assim como acontece com scrollpt, SQL Server pode atribuir um valor diferente do solicitado.
Comentários
O parâmetro de status RPC é um dos seguintes:
Valor | Descrição |
---|---|
0 | Êxito |
0x0001 | Falha |
1FF6 | Não foi possível retornar metadados. Observação: o motivo para isso é que a instrução não produz um conjunto de resultados; por exemplo, é uma instrução INSERT ou DDL. |
Exemplos
Veja a seguir um exemplo de como usar sp_cursorprepare e sp_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
Quando stmt é parametrizado e o valor de scrollopt PARAMETERIZED_STMT é ON, o formato da cadeia de caracteres é o seguinte:
{ <nome> da variável local**<tipo> de dados } [ ,... n ]
Consulte Também
sp_cursorexecute (Transact-SQL)
sp_cursoropen (Transact-SQL)
sp_cursorunprepare (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de