Gespeicherte Prozedur mit einem Ausgabeparameter ausführen?

197

Ich habe eine gespeicherte Prozedur, die ich testen möchte. Ich versuche es über SQL Management Studio zu testen. Um diesen Test durchzuführen, gebe ich ...

exec my_stored_procedure 'param1Value', 'param2Value'

Der letzte Parameter ist ein output parameter. Ich weiß jedoch nicht, wie ich eine gespeicherte Prozedur mit Ausgabeparametern testen soll.

Wie führe ich eine gespeicherte Prozedur mit einem Ausgabeparameter aus?

user70192
quelle

Antworten:

225

Der einfache Weg ist , um right-clickauf das procedurein SQL Server Management Studio (SSMS),

wählen execute stored procedure...

und fügen Sie nach Aufforderung Werte für die Eingabeparameter hinzu .

SSMSgeneriert dann den Code, um den Prozess in einem neuen Abfragefenster auszuführen, und führt ihn für Sie aus. Sie können den generierten Code studieren, um zu sehen, wie es gemacht wird.

Strahl
quelle
2
Ich kenne alle anderen Möglichkeiten, um gespeicherte Prozeduren auszuführen (wie EXEC, Aufruf von C # oder PHP), aber dies ist die einfachste und eine nicht technische Person kann dies tun. Also +1 dafür und danke für das Teilen der Informationen.
Dhaval
Ich habe keinen executeBefehl, das Kontextmenü hat nur einen modify.
Akbari
Das scheint seltsam. Mein Kontextmenü auf einer gespeicherten Prozedur enthält ungefähr ein Dutzend Elemente, einschließlich Ändern, Ausführen, Eigenschaften und andere
Ray
2
Ich denke, die Antwort von Jaider unten vervollständigt diese Antwort, da ich selbst an dem schriftlichen Befehl und nicht an der Mauslösung interessiert wäre.
Alwyn Schoeman
Eine andere, etwas andere Art der Verwendung von SSMS: Klicken Sie mit der rechten Maustaste auf den SP, klicken Sie auf "Script Stored Procedure as" und dann auf "EXECUTE To". Dies zeigt Ihnen die TSQL.
John Gilmer
167

du kannst das :

declare @rowCount int
exec yourStoredProcedureName @outputparameterspOf = @rowCount output
Farhad
quelle
7
Ich habe am Ende nicht 'OUTPUT' gesagt. Immer etwas Dummes, danke!
Milne
Ich möchte es vermeiden, Dialoge in SSMS so weit wie möglich zu öffnen, damit dies perfekt war.
Ahwm
89

Rückgabewert aus der Prozedur

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 
Wasay Raza
quelle
42

Überprüfen Sie dies, wobei die ersten beiden Parameter Eingabeparameter und der dritte Ausgabeparameter in der Prozedurdefinition sind.

DECLARE @PK_Code INT;
EXEC USP_Validate_Login  'ID', 'PWD', @PK_Code OUTPUT
SELECT @PK_Code
Scheich M. Haris
quelle
30

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

Beispiel:

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

Hoffe das hilft!

Ajdams
quelle
26

Verfahrensbeispiel:

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

So rufen Sie diese Prozedur auf

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

Deklarieren Sie zunächst die Ausgabevariable:

DECLARE @MyOutputParameter INT;

Führen Sie dann die gespeicherte Prozedur aus, und Sie können dies ohne Parameternamen wie folgt tun:

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT

oder mit Parameternamen:

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

Und schließlich können Sie das Ausgabeergebnis sehen, indem Sie Folgendes ausführen SELECT:

SELECT @MyOutputParameter 
Jaider
quelle
4
Dies sollte die gewählte Antwort gewesen sein
anaval
9

Wie wäre es damit? Es ist extrem vereinfacht:

  1. Das unten stehende SPROC hat einen Ausgabeparameter von @ParentProductID

  2. Wir wollen den Wert der Ausgabe auswählen, @ParentProductIDin @MyParentProductIDden unten deklariert wird.

  3. Hier ist der Code:

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

> Versuchen Sie dies, es funktioniert gut für den Mehrfachausgabeparameter:

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
Yashwant Softwareentwickler
quelle
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
Dhrubajyoti Das
quelle
3

Mit dieser Abfrage können Sie jede gespeicherte Prozedur ausführen (mit oder ohne Ausgabeparameter):

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

Hier sollte der Datentyp von @temp mit @ parameter3 in SP identisch sein.

Hoffe das hilft..

Dunkle Materie
quelle
Das war hilfreich für mich. Danke dir. Ich habe nicht daran gedacht, die Variable zuerst zu deklarieren. Ich brauchte nur ein Syntaxbeispiel. Das war's.
Steven Johnson
1

Hier ist die gespeicherte Prozedur

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

Und hier ist der Weg, um die Prozedur auszuführen

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

Bitte überprüfen Sie das folgende Beispiel, um den Wert der Ausgabevariablen durch Ausführen einer gespeicherten Prozedur zu erhalten.

    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'
Rony Patel
quelle
-1

Ich verwende Ausgabeparameter in SQL Proc und später habe ich diese Werte in der Ergebnismenge verwendet.

Geben Sie hier die Bildbeschreibung ein

Ajeet Verma
quelle