आउटपुट पैरामीटर के साथ संग्रहीत प्रक्रिया निष्पादित करें?


197

मेरे पास एक संग्रहीत प्रक्रिया है जिसे मैं परीक्षण करने की कोशिश कर रहा हूं। मैं SQL प्रबंधन स्टूडियो के माध्यम से इसका परीक्षण करने की कोशिश कर रहा हूं। इस परीक्षा को चलाने के लिए मैं प्रवेश करता हूं ...

exec my_stored_procedure 'param1Value', 'param2Value'

अंतिम पैरामीटर ए है output parameter । हालांकि, मुझे नहीं पता कि आउटपुट मापदंडों के साथ संग्रहीत प्रक्रिया का परीक्षण कैसे किया जाए।

मैं आउटपुट पैरामीटर के साथ संग्रहीत प्रक्रिया कैसे चला सकता हूं?

जवाबों:


225

आसान तरीका है right-clickपर procedureमें Sql सर्वर प्रबंधन स्टूडियो (SSMS),

चुनते हैं execute stored procedure...

और इनपुट मापदंडों के लिए मान जोड़ें ।

SSMSफिर एक नई क्वेरी विंडो में खरीद को चलाने के लिए कोड उत्पन्न करेगा, और आपके लिए इसे निष्पादित करेगा। आप उत्पन्न कोड का अध्ययन कर सकते हैं कि यह कैसे किया जाता है।


2
मैं संग्रहीत प्रक्रिया को निष्पादित करने के अन्य सभी संभावित तरीके जानता हूं (जैसे EXEC, C # या PHP से कॉल करना) लेकिन यह सबसे आसान है और एक गैर तकनीकी व्यक्ति ऐसा कर सकता है। तो इसके लिए +1 और जानकारी साझा करने के लिए thx।
धवल

मेरे पास एक executeकमांड नहीं है , संदर्भ मेनू में सिर्फ एक है modify
अकबरी

यह अजीब लगता है। एक संग्रहीत कार्यविधि पर मेरे संदर्भ मेनू में एक दर्जन से अधिक आइटम हैं, जिसमें संशोधित, निष्पादन, गुण, और अन्य शामिल हैं
रे

2
मुझे लगता है कि जैदर द्वारा नीचे दिया गया उत्तर इस उत्तर को पूरा करता है क्योंकि मैं स्वयं लिखित कमांड में रुचि रखता हूं न कि माउस समाधान में।
अल्विन शोमैन

SSMS का उपयोग करते हुए एक और थोड़ा अलग तरीका: एसपी पर राइट-क्लिक करें, "स्क्रिप्ट संग्रहित प्रक्रिया" के रूप में क्लिक करें, फिर "एक्जिट टू" पर क्लिक करें। यह आपको TSQL दिखाएगा।
जॉन गिल्मर

168

तुम यह केर सकते हो :

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

7
मैं अंत में 'बाहर' नहीं कह रहा था। हमेशा कुछ बेवकूफ, धन्यवाद!
मिल्ने

मुझे SSMS में संवाद खोलने से बचना पसंद है, इसलिए यह एकदम सही था।
आह्वान

89

प्रक्रिया से घाटी लौटें

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 

43

यह जांचें, जहां पहले दो पैरामीटर इनपुट पैरामीटर हैं और 3 एक आउटपुट प्रक्रिया है।

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

30

से http://support.microsoft.com/kb/262499

उदाहरण:

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

उम्मीद है की यह मदद करेगा!


26

प्रक्रिया उदाहरण:

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

इस प्रक्रिया को कैसे कॉल करें

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

18

सबसे पहले, आउटपुट चर घोषित करें:

DECLARE @MyOutputParameter INT;

फिर, संग्रहीत कार्यविधि को निष्पादित करें, और आप इसे पैरामीटर्स के नामों के बिना कर सकते हैं, जैसे:

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT

या पैरामर के नाम के साथ:

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

और अंत में, आप एक करके उत्पादन परिणाम देख सकते हैं SELECT:

SELECT @MyOutputParameter 

4
इसका चुना हुआ उत्तर होना चाहिए
anaval

9

इस बारे में कैसा है? यह बेहद सरल है:

  1. नीचे SPROC का आउटपुट पैरामीटर है @ParentProductID

  2. हम के उत्पादन का मूल्य का चयन करना चाहते @ParentProductIDमें @MyParentProductIDजो नीचे घोषित किया जाता है।

  3. यहाँ कोड है:

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

7

> कई आउटपुट पैरामीटर के लिए इसके ठीक काम की कोशिश करें:

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

इस क्वेरी से आप किसी भी संग्रहीत कार्यविधि (आउटपुट पैरामीटर के साथ या बिना) को निष्पादित कर सकते हैं :

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

यहाँ @ टैम्पेट का डेटाटाइप SP के भीतर @ पैरामीटर 3 के समान होना चाहिए।

उम्मीद है की यह मदद करेगा..


यह मेरे लिए मददगार था। धन्यवाद। मैंने पहले चर घोषित करने के लिए नहीं सोचा था। बस एक वाक्यविन्यास उदाहरण देखने की जरूरत है। यही था वह।
स्टीवन जॉनसन

1

यहाँ संग्रहीत प्रक्रिया है

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

और यहां प्रक्रिया को निष्पादित करने का तरीका है

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

1

किसी संग्रहीत कार्यविधि को निष्पादित करके आउटपुट चर मान प्राप्त करने के लिए कृपया नीचे दिए गए उदाहरण की जाँच करें।

    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

मैं एसक्यूएल प्रोक में आउटपुट पैरामीटर का उपयोग कर रहा हूं और बाद में मैंने परिणाम में इस मान का उपयोग किया।

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.