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 回答