【发布时间】:2016-02-01 06:03:07
【问题描述】:
我正在尝试遵循
中给出的答案之一How to insert 1000 random dates between a given range?
并使用以下代码创建函数:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION RandomDate (@fromDate DATE, @toDate DATE)
RETURNS DATE
AS
BEGIN
declare @days_between int
declare @days_rand int
set @days_between = datediff(day,@fromDate,@toDate)
set @days_rand = cast(RAND()*10000 as int) % @days_between
return dateadd(day, @days_rand, @fromDate)
end
当我尝试创建函数时,出现以下错误:
消息 443,级别 16,状态 1,过程 RandomDate,第 7 行
在函数中无效使用副作用运算符“rand”。
关于如何解决它的任何想法?
谢谢
【问题讨论】:
-
RAND() 函数直接不允许在 UDF 中使用。 blog.sqlauthority.com/2012/11/20/…
-
必须是 UDF 吗?你不能为此使用存储过程吗?
-
会不会是调用sp的函数?
-
Sp无法从函数中调用..
标签: sql sql-server sql-server-2012