TSQL:为什么不能在标量值函数中使用newid()

时间:2009-12-21 05:31:45

标签: sql-server tsql

我尝试使用标量值函数实现以下链接,SQL Server 2000返回错误信息:在函数中无效使用'newid'

http://www.bennadel.com/blog/310-Ask-Ben-Getting-A-Random-Date-From-A-Date-Range-In-SQL.htm

有没有办法解决这个问题?

3 个答案:

答案 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())