คุณกำหนดผลลัพธ์ของการเรียก exec ให้กับตัวแปรใน SQL ได้อย่างไร? ฉันมี proc ที่เก็บไว้up_GetBusinessDay
ซึ่งเรียกว่าซึ่งส่งคืนวันที่เดียว
คุณสามารถทำสิ่งนี้ได้หรือไม่:
exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1
คุณกำหนดผลลัพธ์ของการเรียก exec ให้กับตัวแปรใน SQL ได้อย่างไร? ฉันมี proc ที่เก็บไว้up_GetBusinessDay
ซึ่งเรียกว่าซึ่งส่งคืนวันที่เดียว
คุณสามารถทำสิ่งนี้ได้หรือไม่:
exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1
คำตอบ:
ฉันใช้ค่าส่งคืนเพื่อส่งต่อสถานะข้อผิดพลาดย้อนกลับเสมอ หากคุณต้องการส่งกลับค่าหนึ่งค่าฉันจะใช้พารามิเตอร์เอาต์พุต
ขั้นตอนการจัดเก็บตัวอย่างพร้อมพารามิเตอร์ 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
อย่างแน่นอนไม่ได้ทำงานกับ
UNIQUEIDENTIFIER
เป็นเพียงตัวอย่างที่RETURN
ถูกออกแบบมาเพื่อการทำงานเฉพาะกับค่าจำนวนเต็มให้ดูเอกสาร วิธีที่แนะนำในการรับข้อมูลอื่น ๆ จาก SP คือส่งคืนชุดผลลัพธ์หรือใช้OUTPUT
declare @EventId int
CREATE TABLE #EventId (EventId int)
insert into #EventId exec rptInputEventId
set @EventId = (select * from #EventId)
drop table #EventId
จากเอกสารประกอบ (สมมติว่าคุณใช้ SQL-Server):
USE AdventureWorks;
GO
DECLARE @returnstatus nvarchar(15);
SET @returnstatus = NULL;
EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2;
PRINT @returnstatus;
GO
ใช่มันควรจะได้ผล
ฉันมีคำถามเดียวกัน แม้ว่าจะมีคำตอบที่ดีอยู่ที่นี่ฉันจึงตัดสินใจสร้างฟังก์ชันที่มีมูลค่าตาราง ด้วยฟังก์ชันที่มีค่าของตาราง (หรือสเกลาร์) คุณไม่จำเป็นต้องเปลี่ยน proc ที่จัดเก็บไว้ ฉันเพียงแค่เลือกจากฟังก์ชันมูลค่าตาราง โปรดทราบว่าพารามิเตอร์ (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;