有三种方法可以使用:返回值,输出参数和结果集
另外,如果你注意使用模式: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
输出参数只能返回一个值,而可以是任何数据类型
结果集 对结果集进行的过程,如:
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
结果集可以有许多行和任何数据类型
似乎有种很难根据要求回答您的问题时选择“最佳”答案。 我在这里选择了最详细的一个。谢谢。 – David 2010-05-21 12:49:37