जवाबों:
मैं हमेशा वापस त्रुटि स्थिति को पारित करने के लिए वापसी मूल्य का उपयोग करता हूं। यदि आपको एक मान वापस करने की आवश्यकता है तो मैं एक आउटपुट पैरामीटर का उपयोग करूंगा।
एक 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
तो हाँ, यह उस तरह से काम करना चाहिए।
मेरा भी यही सवाल था। जबकि यहाँ अच्छे उत्तर हैं, मैंने एक टेबल-वैल्यू फ़ंक्शन बनाने का फैसला किया। एक तालिका (या स्केलर) मूल्यवान फ़ंक्शन के साथ आपको अपनी संग्रहीत खरीद को बदलना नहीं है। मैंने केवल टेबल-वैल्यू फ़ंक्शन से चयन किया। ध्यान दें कि पैरामीटर (MyParameter वैकल्पिक है)।
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;