มีสามวิธีที่คุณสามารถใช้ได้: ค่า RETURN และพารามิเตอร์ OUTPUT และชุดผลลัพธ์
นอกจากนี้โปรดระวังว่าคุณใช้รูปแบบ: SELECT @Variable=column FROM table ...
หากมีหลายแถวที่ส่งคืนจากการค้นหา @Variable ของคุณจะมีเฉพาะค่าจากแถวสุดท้ายที่ส่งคืนโดยแบบสอบถาม
ส่งกลับค่า
เนื่องจากการสืบค้นของคุณส่งคืนฟิลด์ int อย่างน้อยก็ขึ้นอยู่กับวิธีที่คุณตั้งชื่อ คุณสามารถใช้เคล็ดลับนี้:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
และตอนนี้เรียกขั้นตอนของคุณเช่น:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
สิ่งนี้จะใช้ได้กับ INT เท่านั้นเนื่องจาก RETURN สามารถส่งคืนค่า int ได้เพียงค่าเดียวและค่า null จะถูกแปลงเป็นศูนย์
OUTPUT PARAMETER
คุณสามารถใช้พารามิเตอร์เอาต์พุต:
CREATE PROCEDURE GetMyInt
( @Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
และตอนนี้เรียกขั้นตอนของคุณเช่น:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
พารามิเตอร์เอาต์พุตสามารถคืนค่าได้เพียงค่าเดียว แต่สามารถเป็นข้อมูลประเภทใดก็ได้
RESULT SET
สำหรับชุดผลลัพธ์ให้ทำตามขั้นตอนดังนี้:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
ใช้มันเช่น:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
ชุดผลลัพธ์สามารถมีหลายแถวและหลายคอลัมน์ในประเภทข้อมูลใดก็ได้