srv_paramset (API de procedimento armazenado estendido)
Aplica-se: SQL Server
Importante
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Use a integração CLR em vez disso.
Define o valor de um parâmetro de retorno de chamada do procedimento armazenado remoto. Esta função foi substituída pela função srv_paramsetoutput.
Sintaxe
int srv_paramset (
SRV_PROC *
srvproc
,
int
n
,
void *
data
,
int
len
);
Argumentos
srvproc
É um ponteiro para a estrutura SRV_PROC que identifica uma conexão de cliente específica (nesse caso, o identificador que recebeu a chamada do procedimento armazenado remoto). A estrutura contém informações que a biblioteca de APIs de procedimento armazenado estendido usa para gerenciar a comunicação e os dados entre o aplicativo e o cliente.
n
Indica o número do parâmetro a ser definido. O primeiro parâmetro é 1.
data
É um ponteiro para o valor dos dados a ser enviado de volta ao cliente como o parâmetro de retorno do procedimento armazenado remoto.
len
Especifica o comprimento dos dados a serem retornados. Se o tipo de dados do parâmetro tiver um tamanho constante e não permitir valores nulos (por exemplo, srvbit ou srvint1), len será ignorado.
Devoluções
SUCCEED se o valor do parâmetro tiver sido definido com êxito; caso contrário, FAIL. FAIL será retornado quando não houver procedimentos armazenados remotos atuais, quando não existir o n-ésimo parâmetro de procedimento armazenado remoto, quando o parâmetro não for um parâmetro de retorno e quando o argumento len não for válido.
Se len for 0, NULL será retornado. Definir len como 0 é o único modo de retornar NULL ao cliente.
Essa função retornará os valores a seguir, se o parâmetro for um dos tipos de dados do Microsoft SQL Server 2005 (9.x).
Novos tipos de dados | Comprimento dos dados de retorno |
---|---|
BITN | NULL: len = 0, dados = IG, RET = 0 ZERO: N/A >=255: N/A <255: N/A |
BIGVARCHAR | NULL: len = 0, dados = IG, RET = 1 ZERO: len = IG, dados = IG, RET = 0 >=255: len = max8k, dados = válidos, RET = 0 <255: len = <8k, dados = válidos, RET = 1 |
BIGCHAR | NULL: len = 0, dados = IG, RET = 1 ZERO: len = IG, dados = IG, RET = 0 >=255: len = max8k, dados = válidos, RET = 0 <255: len = <8k, dados = válidos, RET = 1 |
BIGBINARY | NULL: len = 0, dados = IG, RET = 1 ZERO: len = IG, dados = IG, RET = 0 >=255: len = max8k, dados = válidos, RET = 0 <255: len = <8k, dados = válidos, RET = 1 |
BIGVARBINARY | NULL: len = 0, dados = IG, RET = 1 ZERO: len = IG, dados = IG, RET = 0 >=255: len = max8k, dados = válidos, RET = 0 <255: len = <8k, dados = válidos, RET = 1 |
NCHAR | NULL: len = 0, dados = IG, RET = 1 ZERO: len = IG, dados = IG, RET = 0 >=255: len = max8k, dados = válidos, RET = 0 <255: len = <8k, dados = válidos, RET = 1 |
NVARCHAR | NULL: len = 0, dados = IG, RET = 1 ZERO: len = IG, dados = IG, RET = 0 >=255: len = max8k, dados = válidos, RET = 0 <255: len = <8k, dados = válidos, RET = 1 |
NTEXT | NULL: len = IG, dados = IG, RET = 0 ZERO: len = IG, dados = IG, RET = 0 >=255: len = IG, dados = IG, RET = 0 <255: len = IG, dados = IG, RET = 0 |
RET = Valor de retorno de srv_paramset | |
IG = Valor será ignorado | |
valid = Qualquer ponteiro válido para dados |
Comentários
Os parâmetros contêm dados passados entre os clientes e o aplicativo com procedimentos armazenados remotos. O cliente pode especificar certos parâmetros como parâmetros de retorno. Esses parâmetros de retorno podem conter valores que o aplicativo servidor Open Data Services devolve ao cliente. Usar parâmetros de retorno equivale a passar parâmetros por referência.
Você não pode definir o valor de retorno para um parâmetro que não foi invocado como um parâmetro de retorno. Use srv_paramstatus para determinar como o parâmetro foi invocado.
Esta função define o valor de retorno para um parâmetro, mas não envia o valor de retorno ao cliente. Todos os parâmetros de retorno, independentemente se seus valores retornados foram ou não com srv_paramset, serão automaticamente enviados ao cliente quando srv_senddone for chamado com o sinalizador de status SRV_DONE_FINAL definido.
Quando uma chamada de procedimento armazenado remoto é feita com parâmetros, os parâmetros podem ser passados pelo nome ou pela posição (sem-nome). Se a chamada de procedimento armazenado remoto for feita com alguns parâmetros transmitidos pelo nome e outros pela posição, ocorrerá um erro. O manipulador SRV_RPC ainda é chamado, mas aparece como se não houvesse parâmetros e srv_rpcparams retorna 0.
Importante
Você deve examinar totalmente o código-fonte de procedimentos armazenados estendidos e deve testar as DLLs compiladas antes de instalá-las em um servidor de produção. Para obter informações sobre revisão e testes de segurança, consulte este site da Microsoft.
Confira também
srv_paramsetoutput (API de procedimento armazenado estendido)