SQLSERVER的用户定义函数里为什么不能用GETDATE函数???

paradox 2002-01-31 11:50:16
在SQLSERVER2000里,代码如下,系统报错"GETDATE使用无效"


CREATE FUNCTION [myFunction]
(
@param AS INT
)
RETURNS INT
AS
BEGIN
DECLARE @RET INT

SET @RET = YEAR(GETDATE())

RETURN @RET
END
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
net_steven 2002-01-31
  • 打赏
  • 举报
回复
函数的确定性和副作用
函数可以是确定的或不确定的。如果任何时候用一组特定的输入值调用函数时返回的结果总是相同的,则这些函数为确定的。如果每次调用函数时即使用的是相同的一组特定输入值,返回的结果总是不同的,则这些函数为不确定的。

不确定的函数会产生副作用。副作用是更改数据库的某些全局状态,比如更新数据库表或某些外部资源,如文件或网络等(例如,修改文件或发送电子邮件消息)。

不允许在用户定义函数主体中内置不确定函数;这些不确定函数如下:

@@CONNECTIONS @@TOTAL_ERRORS
@@CPU_BUSY @@TOTAL_READ
@@IDLE @@TOTAL_WRITE
@@IO_BUSY GETDATE
@@MAX_CONNECTIONS GETUTCDATE
@@PACK_RECEIVED NEWID
@@PACK_SENT RAND
@@PACKET_ERRORS TEXTPTR
@@TIMETICKS
-------------------------------------------------
可以用参数将GETDATE()的值传入函数体内。


paradox 2002-01-31
  • 打赏
  • 举报
回复
谢谢net_steven(吃素的狼) 
yangtom 2002-01-31
  • 打赏
  • 举报
回复
恩~~
LiaoCheng 2002-01-31
  • 打赏
  • 举报
回复
net_steven(吃素的狼) good

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧