为啥 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】:

SYSDATEGETDATE 执行相同。

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% 的产品标识符无效,为啥?

谁能告诉我为啥会收到 SQL*PLUS 无效标识符错误?

ie8下showModalDialog为啥无效呢解决办法

SQL 无效标识符 00904.00000 - “%s:无效标识符”

错误报告:SQL 错误:ORA-00904::无效标识符 00904。00000 - “%s:无效标识符”