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?

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.


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

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 

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

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!


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

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 

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

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

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

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..


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

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'

-1

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

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.