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?

pengguna70192
sumber

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.

sinar
sumber
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
farhad
sumber
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 
wasay raza
sumber
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
Sheikh M. Haris
sumber
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!

ajdams
sumber
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
Abhishek Jaiswal
sumber
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 
Jaider
sumber
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
pengguna1388325
sumber
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
Pengembang Perangkat Lunak Yashwant
sumber
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
sumber
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..

Materi Gelap
sumber
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
Debendra Dash
sumber
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'
Rony Patel
sumber
-1

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

masukkan deskripsi gambar di sini

Ajeet Verma
sumber