1

次のようなことができるようにしたい: ストアド プロシージャは常に数値を返す (tinyint)

INSERT INTO CustomerSelections
           ([draw_date]
           ,[val1]
           ,[val2]
           ,[val3]
           ,[val4]
           ,[val5]
           ,[val6])
     VALUES
           (
           '2013-07-05'
           ,EXEC GenerateRandomNumbers 1, 49, 1, 0
           ,EXEC GenerateRandomNumbers 1, 49, 1, 0
           ,EXEC GenerateRandomNumbers 1, 49, 1, 0
           ,EXEC GenerateRandomNumbers 1, 49, 1, 0
           ,EXEC GenerateRandomNumbers 1, 49, 1, 0
           ,EXEC GenerateRandomNumbers 1, 49, 1, 0
           )

しかし、そこに値を取得する方法がわかりませんか?

更新: 私はこのようなことを試しました:

渡された値を次のストアド プロシージャに入れます。

ALTER PROCEDURE [dbo].[GetUniqueLottoNumber] 

AS
BEGIN

DECLARE @return_value int

EXEC    @return_value = [dbo].[GenerateRandomNumbers]
        @StartNumber = 1,
        @EndNumber = 49,
        @QuantityToOutput = 1,
        @AllowDuplicates = 0

END

次に、これを行いました:

CREATE TABLE #tmp (Number TINYINT)
DECLARE @q nvarchar(4000)
DECLARE @return_value int
SET @q = 'EXEC  @return_value = [dbo].[GetUniqueLottoNumber]';

INSERT INTO  #tmp (Number)
EXEC sp_executesql @q

しかし、挿入値に@qを入れると気に入りません。

4

2 に答える 2

3

なぜプロシージャを 6 回呼び出す必要があるのですか? 必要な応答の数をパラメーターとして SP を呼び出せないのはなぜですか?

とにかくこのようなことを試してください。

DECLARE @val1 INT
DECLARE @val2 INT
DECLARE @val3 INT 
DECLARE @val4 INT 
DECLARE @val5 INT 
DECLARE @val6 INT 

EXEC @val1 = GenerateRandomNumbers 1, 49, 1, 0
EXEC @val2 = GenerateRandomNumbers 1, 49, 1, 0
EXEC @val3 = GenerateRandomNumbers 1, 49, 1, 0
EXEC @val4 = GenerateRandomNumbers 1, 49, 1, 0
EXEC @val5 = GenerateRandomNumbers 1, 49, 1, 0
EXEC @val6 = GenerateRandomNumbers 1, 49, 1, 0
INSERT INTO CustomerSelections
           ([draw_date]
           ,[val1]
           ,[val2]
           ,[val3]
           ,[val4]
           ,[val5]
           ,[val6])
     VALUES
           (
           '2013-07-05'
           ,@val1
           ,@val2
           ,@val3
           ,@val4
           ,@val5
           ,@val6
           )
于 2013-07-21T12:55:58.450 に答える
1

まず、いくつかのパラメーターを宣言し、それらの変数を各 exec ステートメントに渡してから、その変数を挿入ステートメントで使用する必要があります。詳細については、以下のリンクをたどることができます。

ストアド プロシージャの戻り値を変数に設定する

于 2013-07-21T08:42:56.987 に答える