Cómo especificar los parámetros de salida cuando se utiliza el sp_executesql 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

Se utiliza el procedimiento almacenado del sistema sp_executesql para ejecutar una instrucción SQL de T que se puede reutilizar varias veces, o para ejecutar una instrucción SQL de T generada dinámicamente. Toma los parámetros como entradas para procesar las instrucciones T SQL o lotes. También permite que los parámetros de salida se especifica de forma que se pueden almacenar todos los resultados generados de las instrucciones SQL de T (aunque esto no está documentado en libros en pantalla de SQL Server).

Dos escenarios en los que los parámetros de salida será útiles con sp_executesql son:
  • Si sp_executesql genera un resultado que sea útil, almacenar esta salida a un parámetro de salida permite que el lote de llamada a utilizar el parámetro para consultas posteriores.
  • Si sp_executesql se ejecuta 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 por el 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, consulte "sp_executesql (T-SQL)" y "Utilizar sp_executesql" en SQL Server Books Online.For obtener información adicional, consulte "Using 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 los libros en pantalla de SQL Server 2000.

Propiedades

Id. de artículo: 262499 - Última revisión: lunes, 22 de diciembre de 2014 - Versión: 5.0
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: 
kbsqlsetup kbinfo kbmt 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