Jalankan prosedur tersimpan dengan parameter Output?


197

Saya memiliki prosedur tersimpan yang saya coba untuk uji. Saya mencoba mengujinya melalui SQL Management Studio. Untuk menjalankan tes ini saya masukkan ...

exec my_stored_procedure 'param1Value', 'param2Value'

Parameter terakhir adalah output parameter. Namun, saya tidak tahu cara menguji prosedur tersimpan dengan parameter output.

Bagaimana cara menjalankan prosedur tersimpan dengan parameter output?

Jawaban:


225

Cara mudah adalah dengan right-clickmasuk ke proceduredalam Sql Server Management Studio (SSMS),

Pilih execute stored procedure...

dan tambahkan nilai untuk parameter input seperti yang diminta.

SSMSkemudian akan menghasilkan kode untuk menjalankan proc di jendela permintaan baru, dan menjalankannya untuk Anda. Anda dapat mempelajari kode yang dihasilkan untuk melihat bagaimana hal itu dilakukan.


2
Saya tahu semua cara lain yang mungkin untuk menjalankan prosedur tersimpan (seperti EXEC, menelepon dari C # atau PHP) tetapi ini adalah yang termudah dan orang yang tidak teknis dapat melakukan ini. jadi +1 untuk ini dan thx untuk berbagi informasi.
Dhaval

Saya tidak punya executeperintah, menu konteks baru a modify.
Akbari

Sepertinya aneh. Menu konteks saya pada prosedur tersimpan memiliki sekitar selusin item, termasuk memodifikasi, mengeksekusi, properti, dan lainnya
Ray

2
Saya pikir jawaban oleh Jaider di bawah ini melengkapi jawaban ini karena saya sendiri akan tertarik pada perintah tertulis dan bukan solusi mouse.
Alwyn Schoeman

Cara lain yang sedikit berbeda menggunakan SSMS: klik kanan SP, klik "Script Stored Procedure as", lalu klik "EXECUTE To". Ini akan menunjukkan kepada Anda TSQL.
John Gilmer

167

kamu bisa melakukan ini :

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

7
Saya tidak mengatakan 'OUTPUT' pada akhirnya. Selalu sesuatu yang bodoh, Terima kasih!
Milne

Saya ingin menghindari membuka dialog di SSMS sebanyak mungkin jadi ini sempurna.
ahwm

89

Kembalikan val dari prosedur

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

Periksa ini, Di mana dua parameter pertama adalah parameter input dan yang ketiga adalah parameter Output dalam definisi Prosedur.

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

30

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

Contoh:

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

Semoga ini membantu!


26

Contoh Prosedur:

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

Cara memanggil prosedur ini

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

18

Pertama, deklarasikan variabel output:

DECLARE @MyOutputParameter INT;

Kemudian, jalankan prosedur tersimpan, dan Anda dapat melakukannya tanpa nama parameter, seperti ini:

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT

atau dengan nama parameter:

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

Dan akhirnya, Anda dapat melihat hasil keluaran dengan melakukan SELECT:

SELECT @MyOutputParameter 

4
ini seharusnya jawaban yang dipilih
anaval

9

Bagaimana dengan ini? Ini sangat disederhanakan:

  1. SPROC di bawah ini memiliki parameter output sebesar @ParentProductID

  2. Kami ingin memilih nilai output @ParentProductIDke @MyParentProductIDyang dinyatakan di bawah ini.

  3. Inilah Kode:

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

7

> Coba ini berfungsi baik untuk beberapa parameter output:

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

Dengan kueri ini, Anda dapat menjalankan prosedur tersimpan (Dengan atau Tanpa parameter output):

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

Di sini tipe data dari @temp harus sama dengan @ parameter3 dalam SP.

Semoga ini membantu..


Ini membantu saya. Terima kasih. Saya tidak berpikir untuk mendeklarasikan variabel terlebih dahulu. Hanya perlu melihat contoh sintaks. Ini dia.
Steven Johnson

1

Ini adalah prosedur tersimpan

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

Dan inilah cara untuk menjalankan prosedurnya

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

1

Silakan periksa contoh di bawah ini untuk mendapatkan nilai variabel output dengan menjalankan prosedur tersimpan.

    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

Saya menggunakan parameter output dalam SQL Proc dan kemudian saya menggunakan nilai ini di resultset.

masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.