উত্তর:
আমি সর্বদা ফিরে ত্রুটি স্থিতির জন্য ফেরতের মানটি ব্যবহার করি। আপনার যদি একটি মান পাস করতে হয় তবে আমি একটি আউটপুট প্যারামিটার ব্যবহার করব।
একটি OUTPUT প্যারামিটার সহ নমুনা সঞ্চিত পদ্ধতি:
CREATE PROCEDURE YourStoredProcedure
(
@Param1 int
,@Param2 varchar(5)
,@Param3 datetime OUTPUT
)
AS
IF ISNULL(@Param1,0)>5
BEGIN
SET @Param3=GETDATE()
END
ELSE
BEGIN
SET @Param3='1/1/2010'
END
RETURN 0
GO
একটি OUTPUT প্যারামিটার সহ সঞ্চিত পদ্ধতিতে কল করুন:
DECLARE @OutputParameter datetime
,@ReturnValue int
EXEC @ReturnValue=YourStoredProcedure 1,null, @OutputParameter OUTPUT
PRINT @ReturnValue
PRINT CONVERT(char(23),@OutputParameter ,121)
আউটপুট:
0
2010-01-01 00:00:00.000
আপনি যদি কোনও পূর্ণসংখ্যকে সহজেই ফিরিয়ে দিতে চান তবে এটি কাজ করবে:
DECLARE @ResultForPos INT
EXEC @ResultForPos = storedprocedureName 'InputParameter'
SELECT @ResultForPos
UNIQUEIDENTIFIER।
declare @EventId int
CREATE TABLE #EventId (EventId int)
insert into #EventId exec rptInputEventId
set @EventId = (select * from #EventId)
drop table #EventId
ডকুমেন্টেশন থেকে (ধরে নিই যে আপনি এসকিউএল-সার্ভার ব্যবহার করেছেন):
USE AdventureWorks;
GO
DECLARE @returnstatus nvarchar(15);
SET @returnstatus = NULL;
EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2;
PRINT @returnstatus;
GO
সুতরাং হ্যাঁ, এটি সেভাবে কাজ করা উচিত।
আমিও একই প্রশ্ন করেছিলাম. এখানে ভাল উত্তর থাকার সময় আমি একটি টেবিল-মূল্যবান ফাংশন তৈরি করার সিদ্ধান্ত নিয়েছি। একটি সারণী (বা স্কেলার) মূল্যবান ফাংশন সহ আপনাকে আপনার সঞ্চিত প্রকল্পটি পরিবর্তন করতে হবে না। আমি কেবল টেবিলের মূল্যবান ফাংশন থেকে একটি নির্বাচন করেছি। মনে রাখবেন যে প্যারামিটার (মাইপ্যারামিটারটি isচ্ছিক)।
CREATE FUNCTION [dbo].[MyDateFunction]
(@MyParameter varchar(max))
RETURNS TABLE
AS
RETURN
(
--- Query your table or view or whatever and select the results.
SELECT DateValue FROM MyTable WHERE ID = @MyParameter;
)
আপনার ভেরিয়েবলকে বরাদ্দ দেওয়ার জন্য আপনি কেবল কিছু করতে পারেন:
Declare @MyDate datetime;
SET @MyDate = (SELECT DateValue FROM MyDateFunction(@MyParameter));
আপনি একটি স্কেলারের মূল্যবান ফাংশনও ব্যবহার করতে পারেন:
CREATE FUNCTION TestDateFunction()
RETURNS datetime
BEGIN
RETURN (SELECT GetDate());
END
তাহলে আপনি সহজভাবে করতে পারেন
Declare @MyDate datetime;
SET @MyDate = (Select dbo.TestDateFunction());
SELECT @MyDate;