我希望能够做到这样的事情: 我的存储过程将始终返回一个数字(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放在插入值中时它不喜欢它。
答案 0 :(得分: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
)
答案 1 :(得分:1)
首先,您应该声明一些参数,然后将这些变量传递给每个exec语句,然后在insert statatement中使用这些变量。您可以按照以下链接了解详情。