为啥 GETDATE() 是无效标识符
Posted
技术标签:
【中文标题】为啥 GETDATE() 是无效标识符【英文标题】:Why is the GETDATE() an invalid identifier为什么 GETDATE() 是无效标识符 【发布时间】:2013-04-05 00:42:47 【问题描述】:当我调试这段代码时,为什么 GETDATE() 是一个无效的标识符:Oracle Sql Developer 工具:
CREATE OR REPLACE TRIGGER SPName
AFTER UPDATE
ON TableName
FOR EACH ROW
BEGIN
UPDATE TableName SET LastModifiedDate = GETDATE() WHERE TableName.DET_ID = :new.DET_ID;
END;
【问题讨论】:
1) 使用sysdate
而不是getdate()
。 2) 不允许访问为此表定义的触发器内的表。
【参考方案1】:
我想你想要SYSDATE
,而不是GETDATE()
。试试看:
UPDATE TableName SET LastModifiedDate = (SELECT SYSDATE FROM DUAL);
【讨论】:
【参考方案2】:SYSDATE
和 GETDATE
执行相同。
SYSDATE
兼容 Oracle 语法,GETDATE
兼容 Microsoft SQL Server 语法。
【讨论】:
【参考方案3】:getdate()
用于 MS-SQL,sysdate
用于 Oracle 服务器
【讨论】:
所以;这如何添加到已经涵盖此信息的两个答案中?【参考方案4】:使用getdate()
的ORACLE 等效项,即sysdate
。 Read about here.
getdate() 属于 SQL Server ,不能在 Oracle 上工作。
其他选项是current_date
【讨论】:
current_date 呢?一样吗?以上是关于为啥 GETDATE() 是无效标识符的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不断收到这个受诅咒的 SQL*Plus 无效标识符错误?
在 App Purchase 中,30% 的产品标识符无效,为啥?