আউটপুট প্যারামিটার দিয়ে সঞ্চিত প্রক্রিয়া চালাবেন?


197

আমার পরীক্ষা করার চেষ্টা করছি এমন একটি সঞ্চিত পদ্ধতি রয়েছে। আমি এটি এসকিউএল ম্যানেজমেন্ট স্টুডিওর মাধ্যমে পরীক্ষা করার চেষ্টা করছি। এই পরীক্ষাটি চালানোর জন্য আমি প্রবেশ করি ...

exec my_stored_procedure 'param1Value', 'param2Value'

চূড়ান্ত পরামিতি একটি output parameter। যাইহোক, আউটপুট পরামিতিগুলির সাথে কীভাবে সঞ্চিত পদ্ধতিটি পরীক্ষা করতে হয় তা আমি জানি না।

আউটপুট প্যারামিটার সহ আমি কীভাবে একটি সঞ্চিত পদ্ধতি চালাব?

উত্তর:


225

সহজ উপায় হয় right-clickউপর procedureমধ্যে SQL সার্ভার ম্যানেজমেন্ট স্টুডিও (SSMS),

নির্বাচন করা execute stored procedure...

এবং ইনপুট পরামিতিগুলির অনুরোধ হিসাবে মান যোগ করুন

SSMSতারপরে একটি নতুন ক্যোয়ারী উইন্ডোতে প্রোক চালানোর জন্য কোড তৈরি করবে এবং এটি আপনার জন্য কার্যকর করবে। কীভাবে এটি সম্পন্ন হয় তা দেখতে আপনি উত্পন্ন কোডটি অধ্যয়ন করতে পারেন।


2
আমি সঞ্চিত পদ্ধতি চালানোর অন্যান্য সমস্ত সম্ভাব্য উপায়গুলি জানি (যেমন এক্সইসি, সি # বা পিএইচপি থেকে কল করা) তবে এটি সবচেয়ে সহজ এবং কোনও প্রযুক্তিগত ব্যক্তি এটি করতে পারেন। সুতরাং এটির জন্য +1 এবং তথ্য ভাগ করে নেওয়ার জন্য THX।
ধাওয়াল

আমার কোনও executeকমান্ড নেই, প্রসঙ্গ মেনুতে কেবল একটি আছে modify
আকবরী

অদ্ভুত মনে হচ্ছে। সঞ্চিত পদ্ধতিতে আমার কনটেক্সট মেনুতে প্রায় এক ডজন আইটেম রয়েছে, সংশোধন, সম্পাদন, সম্পত্তি এবং অন্যান্য সহ
রে

2
আমি মনে করি যে নীচে জায়েদারের উত্তরটি এই উত্তরটি সম্পূর্ণ করেছে যেহেতু আমি নিজেই মাউসের সমাধান নয় বরং লিখিত আদেশে আগ্রহী।
আলভিন স্কোম্যান

এসএসএমএস ব্যবহার করে আরেকটি ভিন্ন উপায়: এসপিকে ডান ক্লিক করুন, "স্ক্রিপ্ট হিসাবে সজ্জিত প্রক্রিয়া হিসাবে" ক্লিক করুন, তারপরে "নিষ্ক্রিয় করুন" ক্লিক করুন। এটি আপনাকে টিএসকিউএল প্রদর্শন করবে।
জন গিলমার

167

তুমি এটি করতে পারো :

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

7
আমি শেষে 'আউটপুট' বলছিলাম না। সর্বদা কিছু বোকা, ধন্যবাদ!
মিলেন

আমি যতটা সম্ভব এসএসএমএসে ডায়লগ খোলার এড়াতে চাই তাই এটি নিখুঁত ছিল।
অহ্ম্ম

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 

42

এটি পরীক্ষা করুন, যেখানে প্রথম দুটি পরামিতিগুলি ইনপুট পরামিতি এবং তৃতীয়টি প্রক্রিয়া সংজ্ঞাতে আউটপুট পরামিতি।

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
এটি নির্বাচিত উত্তরটি হওয়া উচিত ছিল
আনাভাল

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

এখানে @temp এর ডেটাটাইপ এসপির মধ্যে @ প্যারামিটার 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

সঞ্চিত প্রক্রিয়া চালিয়ে আউটপুট পরিবর্তনশীল মান পেতে দয়া করে নীচের উদাহরণটি দেখুন check

    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

আমি এসকিউএল প্রকে আউটপুট প্যারামিটার ব্যবহার করছি এবং পরে আমি রেজাল্টে এই মানগুলি ব্যবহার করেছি।

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.