Є три способи, якими можна скористатися: значення 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, і нулі перетворюються на нуль.
ВИХІДНИЙ ПАРАМЕТР
ви можете використовувати вихідний параметр:
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
набори результатів можуть мати багато рядків і багато стовпців будь-якого типу даних