我尝试使用标量值函数实现以下链接,SQL Server 2000返回错误信息:在函数中无效使用'newid'。
http://www.bennadel.com/blog/310-Ask-Ben-Getting-A-Random-Date-From-A-Date-Range-In-SQL.htm
有没有办法解决这个问题?
答案 0 :(得分:3)
在SQL 2000中,您无法在其他函数中使用非确定性函数。
执行此操作的最佳方法是在外部查询中使用子查询。根据我的博客:http://msmvps.com/blogs/robfarley/archive/2009/12/05/dangers-of-begin-and-end.aspx
,它的性能优于标量函数答案 1 :(得分:1)
我发现这样做的唯一方法是创建一个选择NEWID()值的视图,然后在函数中使用此视图。
答案 2 :(得分:0)
为什么不一直传递NEW_ID()作为参数?使用视图恕我直言,恕我直言
ALTER FUNCTION dbo.MyFunc (
@param1 int,
@param2 datetime,
@GUID uniqueidentifier
)
RETURNS int
AS
....
SELECT dbo.MyFunc (1, '20091221', NEWID())