Cómo especificar parámetros de salida cuando se utiliza el sp_executesql el procedimiento almacenado en SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 262499 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

El procedimiento de almacenado del sistema sp_executesql se utiliza para ejecutar una instrucción de T-SQL que se puede reutilizar varias veces, o para ejecutar una instrucción de T-SQL generada dinámicamente. Toma los parámetros como entradas para procesar las instrucciones de T-SQL o lotes. También permite parámetros de salida se especifica para que se puede almacenar cualquier resultado generado a partir de las instrucciones de T-SQL (aunque esto no está documentado en libros en pantalla de SQL Server).

Dos situaciones en que los parámetros de salida será útiles con sp_executesql son:
  • Si sp_executesql genera resultados que serán útil, almacenar este resultado a un parámetro de salida permite que el lote de llamada a utilizar el parámetro para consultas posteriores.
  • Si sp_executesql se está ejecutando un procedimiento almacenado que se define mediante los parámetros de salida, los parámetros de salida de sp_executesql pueden utilizarse para almacenar los resultados generados a partir del procedimiento almacenado.

Más información

Los dos ejemplos siguientes muestran el uso de parámetros de salida con sp_executesql .

ejemplo 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
				
ejemplo 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 obtener información adicional, vea "sp_executesql (T-SQL)" y "Utilizar sp_executesql" en los libros en pantalla de SQL Server. Para obtener información adicional, consulte "Utilizar sp_executesql" en los libros en pantalla de SQL Server y "sp_executesql (T-SQL) en libros en pantalla de SQL Server 7.0" o "sp_executesql" en libros en pantalla de SQL Server 2000.

Propiedades

Id. de artículo: 262499 - Última revisión: jueves, 22 de febrero de 2007 - Versión: 4.3
La información de este artículo se refiere 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
Palabras clave: 
kbmt kbinfo KB262499 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 262499

Enviar comentarios

 

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