SQLServer在函数内不正确地使用了getdate
熟能生巧,不用则生.有段时间不用SQLServer了,结果连函数的用法都忘了.
今天有段代码就是提示标题所写的错误,而我却不知道怎么错了.手写或者在存储过程中都对,偏偏就是下面的代码错
CREATE FUNCTION CloveTest() RETURNS DATETIME AS BEGIN RETURN GETDATE() END GO
我已经把能简化的都简化了,结果这样还出错.过了一会才猛然想起来 SQLServer中函数调用需要说明dbo权限,难道系统函数也需要?
事实证明,就是少了一个dbo.GETDATE(),喵了个咪~
…
…
…
其实呢,事情没有结束.因为这个函数调用的时候又出错了
对象名 'dbo.GETDATE' 无效。
偶滴神呐,咋回事?查了一下msdn,才知道是这么个景.
1.SQLServer2000以及之前的版本,不允许在函数中放置不确定函数.所以dbo.GETDATE()其实是按照自定义函数的调用格式处理的.
这样写虽然编译通过了,但是调用的时候会出错,没法用.
也就是说dbo.GETDATE()能通过编译,用不了;而GETDATE()通不过编译,理论上能用.一切都是幻觉…
2.SqlServer2005以上版本,支持自定义函数的系统函数调用,也就是说不存在本篇文章所说的一切内容.
以上,怨念~~~~
分享到: | |
好懒啊,多久没更新了~
有空就更
内容分析的详细而专业,值得学习,谢谢