有三種方法可以使用:返回值,輸出參數和結果集
另外,如果你注意使用模式: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