使用できる方法は3つあります。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
RETURNは単一のint値しか返せず、nullはゼロに変換されるため、これはINTに対してのみ機能します。
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
出力パラメーターは1つの値のみを返すことができますが、任意のデータ型にすることができます
結果セットの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
結果セットには、任意のデータ型の多くの行と列を含めることができます