Como especificar parâmetros de saída quando você usa o sp_executesql procedimento armazenado no SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 262499 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

sp_executesql procedimento armazenado do sistema é usado para executar uma instrução T-SQL que pode ser reutilizada várias vezes, ou para executar uma instrução T-SQL criada dinamicamente. Demora parâmetros como entradas para processar instruções T-SQL ou lotes. Ele também permite que parâmetros de saída para ser especificado para que qualquer saída gerada a partir de instruções T-SQL pode ser armazenada (embora isso não está documentado nos manuais online do SQL Server).

Dois cenários em que os parâmetros de saída será útil com sp_executesql são:
  • Se sp_executesql gera saída que serão úteis, armazenar essa saída para um parâmetro de saída permite que o lote de chamada usar o parâmetro para consultas posteriores.
  • Se sp_executesql é executar um procedimento armazenado que é definido usando parâmetros de saída, os parâmetros de saída para sp_executesql podem ser usados para armazenar as saídas geradas a partir do procedimento armazenado.

Mais Informações

Os dois exemplos a seguir demonstram o uso de parâmetros de saída com sp_executesql .

exemplo 1
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @IntVariable INT
DECLARE @Lastlname varchar(30)
SET @SQLString = N'SELECT @LastlnameOUT = max(lname)
                   FROM pubs.dbo.employee WHERE job_lvl = @level'
SET @ParmDefinition = N'@level tinyint,
                        @LastlnameOUT varchar(30) OUTPUT'
SET @IntVariable = 35
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@level = @IntVariable,
@LastlnameOUT=@Lastlname OUTPUT
SELECT @Lastlname
				
exemplo 2
CREATE PROCEDURE Myproc
    @parm varchar(10),
    @parm1OUT varchar(30) OUTPUT,
    @parm2OUT varchar(30) OUTPUT
    AS
      SELECT @parm1OUT='parm 1' + @parm
     SELECT @parm2OUT='parm 2' + @parm
GO
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @parmIN VARCHAR(10)
DECLARE @parmRET1 VARCHAR(30)
DECLARE @parmRET2 VARCHAR(30)
SET @parmIN=' returned'
SET @SQLString=N'EXEC Myproc @parm,
                             @parm1OUT OUTPUT, @parm2OUT OUTPUT'
SET @ParmDefinition=N'@parm varchar(10),
                      @parm1OUT varchar(30) OUTPUT,
                      @parm2OUT varchar(30) OUTPUT'

EXECUTE sp_executesql
    @SQLString,
    @ParmDefinition,
    @parm=@parmIN,
    @parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT

SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2"
go
drop procedure Myproc
				
para obter informações adicionais, consulte "sp_executesql (T-SQL)" e "Usando sp_executesql" nos manuais online do SQL Server. Para obter informações adicionais, consulte "Usando sp_executesql" nos manuais online do SQL Server e "sp_executesql (T-SQL) no SQL Server 7.0 Books Online" ou "sp_executesql" nos manuais online do SQL Server 2000.

Propriedades

ID do artigo: 262499 - Última revisão: quinta-feira, 22 de fevereiro de 2007 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Palavras-chave: 
kbmt kbinfo KB262499 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 262499

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com