您可以使用三种方式: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
结果集可以有许多行和许多数据类型的列