¿Ejecutar procedimiento almacenado con un parámetro de salida?


197

Tengo un procedimiento almacenado que estoy intentando probar. Estoy tratando de probarlo a través de SQL Management Studio. Para ejecutar esta prueba entro ...

exec my_stored_procedure 'param1Value', 'param2Value'

El parámetro final es un output parameter. Sin embargo, no sé cómo probar un procedimiento almacenado con parámetros de salida.

¿Cómo ejecuto un procedimiento almacenado con un parámetro de salida?

Respuestas:


225

La manera más fácil es right-clicken las procedurede SQL Server Management Studio (SSMS),

Seleccione execute stored procedure...

y agregue valores para los parámetros de entrada cuando se le solicite.

SSMSluego generará el código para ejecutar el proceso en una nueva ventana de consulta y lo ejecutará por usted. Puede estudiar el código generado para ver cómo se hace.


2
Conozco todas las otras formas posibles de ejecutar el procedimiento almacenado (como EXEC, llamar desde C # o PHP), pero esta es la forma más fácil y una persona no técnica puede hacer esto. entonces +1 para esto y gracias por compartir la información.
Dhaval

No tengo un executecomando, el menú contextual solo tiene un modify.
Akbari

Eso parece extraño. Mi menú contextual en un procedimiento almacenado tiene aproximadamente una docena de elementos, incluidos modificar, ejecutar, propiedades y otros
Ray

2
Creo que la respuesta de Jaider a continuación completa esta respuesta ya que yo mismo estaría interesado en el comando escrito y no en la solución del mouse.
Alwyn Schoeman

Otra forma ligeramente diferente de usar SSMS: haga clic con el botón derecho en el SP, haga clic en "Procedimiento almacenado de script como", luego haga clic en "EJECUTAR A". Esto le mostrará el TSQL.
John Gilmer

167

Puedes hacerlo :

declare @rowCount int
exec yourStoredProcedureName @outputparameterspOf = @rowCount output

77
No estaba diciendo 'SALIDA' al final. Siempre algo estúpido, gracias!
Milne

Me gusta evitar abrir diálogos en SSMS tanto como sea posible, así que esto fue perfecto.
ahwm

89

Devolver val del procedimiento

ALTER PROCEDURE testme @input  VARCHAR(10),
                       @output VARCHAR(20) output
AS
  BEGIN
      IF @input >= '1'
        BEGIN
            SET @output = 'i am back';

            RETURN;
        END
  END

DECLARE @get VARCHAR(20);

EXEC testme
  '1',
  @get output

SELECT @get 

43

Compruebe esto, donde los dos primeros parámetros son parámetros de entrada y el tercero es el parámetro de salida en la definición del procedimiento.

DECLARE @PK_Code INT;
EXEC USP_Validate_Login  'ID', 'PWD', @PK_Code OUTPUT
SELECT @PK_Code

30

Desde http://support.microsoft.com/kb/262499

Ejemplo:

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

¡Espero que esto ayude!


26

Ejemplo de procedimiento:

Create Procedure [dbo].[test]
@Name varchar(100),
@ID int Output   
As  
Begin   
SELECT @ID = UserID from tbl_UserMaster where  Name = @Name   
Return;
END     

Cómo llamar a este procedimiento

Declare @ID int    
EXECUTE [dbo].[test] 'Abhishek',@ID OUTPUT   
PRINT @ID

18

Primero, declare la variable de salida:

DECLARE @MyOutputParameter INT;

Luego, ejecute el procedimiento almacenado, y puede hacerlo sin los nombres de los parámetros, como este:

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT

o con los nombres de los parámetros:

EXEC my_stored_procedure @param1 = 'param1Value', @myoutput = @MyOutputParameter OUTPUT

Y finalmente, puede ver el resultado de salida haciendo un SELECT:

SELECT @MyOutputParameter 

44
esta debería haber sido la respuesta elegida
anaval

9

¿Qué tal esto? Es extremadamente simplificado:

  1. El SPROC a continuación tiene un parámetro de salida de @ParentProductID

  2. Queremos seleccionar el valor de la salida de @ParentProductIDen el @MyParentProductIDque se declara a continuación.

  3. Aquí está el código:

    declare @MyParentProductID int
    
    exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID =  @MyParentProductID output
    
    select @MyParentProductID

7

> Intente esto funciona bien para el parámetro de salida múltiple:

CREATE PROCEDURE [endicia].[credentialLookup]
@accountNumber varchar(20),
@login varchar(20) output,
@password varchar(50) output
AS
BEGIN
SET NOCOUNT ON;
SELECT top 1 @login = [carrierLogin],@password = [carrierPassword]
  FROM [carrier_account] where carrierLogin = @accountNumber
  order by clientId, id
END

Try for the result: 
SELECT *FROM [carrier_account] 
DECLARE @login varchar(20),@password varchar(50)
exec [endicia].[credentialLookup] '588251',@login OUTPUT,@password OUTPUT
SELECT 'login'=@login,'password'=@password

3
CREATE PROCEDURE DBO.MY_STORED_PROCEDURE
(@PARAM1VALUE INT,
@PARAM2VALUE INT,
@OUTPARAM VARCHAR(20) OUT)
AS 
BEGIN
SELECT * FROM DBO.PARAMTABLENAME WHERE PARAM1VALUE=@PARAM1VALUE
END

DECLARE @OUTPARAM2 VARCHAR(20)
EXEC DBO.MY_STORED_PROCEDURE 1,@OUTPARAM2 OUT
PRINT @OUTPARAM2

3

Con esta consulta puede ejecutar cualquier procedimiento almacenado (con o sin parámetro de salida):

DECLARE @temp varchar(100)  
EXEC my_sp
    @parameter1 = 1, 
    @parameter2 = 2, 
    @parameter3 = @temp output, 
    @parameter4 = 3, 
    @parameter5 = 4
PRINT @temp

Aquí el tipo de datos de @temp debe ser el mismo que @ parameter3 dentro de SP.

Espero que esto ayude..


Esto fue útil para mí. Gracias. No pensé en declarar la variable primero. Solo necesitaba ver un ejemplo de sintaxis. Esto fue.
Steven Johnson

1

Aquí está el procedimiento almacenado

create procedure sp1
(
@id as int,
@name as nvarchar(20) out
)
as
begin
select @name=name from employee where id=@id
end

Y aquí está la forma de ejecutar el procedimiento.

 declare @name1 nvarchar(10)
    exec sp1 1,@name1 out
    print @name1

1

Consulte el siguiente ejemplo para obtener el valor de la variable de salida ejecutando un procedimiento almacenado.

    DECLARE @return_value int,
    @Ouput1 int,
    @Ouput2 int,
    @Ouput3 int

EXEC    @return_value = 'Your Sp Name'
        @Param1 = value1,
        @Ouput1 = @Ouput1 OUTPUT,
        @Ouput2 = @Ouput2 OUTPUT,
        @Ouput3 = @Ouput3 OUTPUT

SELECT  @Ouput1 as N'@Ouput1',
        @Ouput2 as N'@Ouput2',
        @Ouput3 as N'@Ouput3'

-1

Estoy usando el parámetro de salida en SQL Proc y luego usé estos valores en el conjunto de resultados.

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.