2009-10-19 28 views
138

Ho una stored procedure che sto cercando di testare. Sto provando a testarlo tramite SQL Management Studio. Per eseguire questo test entro in ...Esegui la stored procedure con un parametro Output?

exec my_stored_procedure 'param1Value', 'param2Value' 

Il parametro finale è un output parameter. Tuttavia, non so come testare una stored procedure con parametri di output.

Come si esegue una procedura memorizzata con un parametro di uscita?

risposta

173

Il modo più semplice è quello di right-click sulla procedure in SQL Server Management Studio (SSMS),

selezionare execute stored procedure...

e aggiungere i valori per i ingresso parametri come richiesto.

SSMS genererà quindi il codice per eseguire il proc in una nuova finestra di query ed eseguirlo per l'utente. Puoi studiare il codice generato per vedere come è fatto.

+1

So che tutti gli altri modi possibili per eseguire stored procedure (come EXEC, chiamando da C# o PHP), ma questo è il la persona più semplice e non tecnica può farlo. quindi +1 per questo e thx per condividere le informazioni. – Dhaval

+0

Non ho un comando 'execute', il menu contestuale ha solo un' modify'. – Akbari

+0

Sembra strano. Il mio menu di scelta rapida su una stored procedure ha circa una dozzina di elementi, tra cui modifica, esecuzione, proprietà e altri – Ray

27

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

Esempio:

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, 
@[email protected], 
@[email protected] OUTPUT,@[email protected] OUTPUT 

SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2" 
GO 
DROP PROCEDURE Myproc 

Spero che questo aiuti!

122

si può fare questo:

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

Non stavo dicendo "OUTPUT" alla fine. Sempre qualcosa di stupido, grazie! – Milne

+0

Mi piace evitare di aprire le finestre di dialogo in SSMS il più possibile, quindi era perfetto. – ahwm

65

Ritorno val dalla procedura

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 
32

Check this, Dove primi due parametri sono parametri di input e 3 ° uno è il parametro di uscita a definizione della procedura.

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

Che ne dici di questo? E 'estremamente semplificata:

  1. Lo SPROC sotto ha un parametro di output di @ParentProductID

  2. Vogliamo selezionare il valore della produzione di @ParentProductID in @MyParentProductID che viene dichiarato sotto.

  3. Ecco il codice:

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

> Prova questo il suo bel lavoro per il parametro di uscita multiple:

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'[email protected],'password'[email protected] 
9

Procedura Esempio:

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

Come chiamare questa procedura

Declare @ID int  
EXECUTE [dbo].[text] 'Abhishek',@ID OUTPUT 
PRINT @ID 
+0

Piccola annotazione: chiami l'SP: [dbo]. [Test] tuttavia quando lo chiami [dbo]. [Testo], questo è correttamente un refuso. per favore aggiusta – leeroya

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

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

In primo luogo, dichiarare la variabile di uscita:

DECLARE @MyOutputParameter INT; 

Quindi, eseguire la stored procedure, e lo si può fare senza nomi di parametri, in questo modo:

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT 

o con i nomi di parametro:

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

E, infine, è possibile vedere il risultato in uscita facendo un SELECT:

SELECT @MyOutputParameter 
Problemi correlati