【发布时间】:2013-07-21 08:16:59
【问题描述】:
我希望能够做这样的事情: 我的存储过程将始终返回一个数字(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 放在插入值中时它不喜欢它。
【问题讨论】:
-
GenerateRandomNumbers 应该是一个函数,而不是一个存储过程。那么这个问题几乎会自行解决。问题是您没有显示存储过程的代码,所以我们无法重写您的代码
标签: sql sql-server sql-server-2008 tsql sql-insert