我给人的印象是,可以在函数名称后的空括号内调用无参数的函数,即其他一些数据库允许执行的操作:
current_timestamp()
而在Oracle中,我必须写
current_timestamp
对于用户定义的函数,此规则不适用(在11g中)。我都可以写
my_function my_function()
我的问题是: 是CURRENT_TIMESTAMP真是名副其实的功能或者我应该认为它是在Oracle SQL方言(SQL标准兼容)的语言结构/伪列?关于何时可以(可选地)强制添加()和何时必须省略它们有任何正式的定义吗?
CURRENT_TIMESTAMP
()
背景信息:
SQL 1992定义:
<current timestamp value function> ::=
CURRENT_TIMESTAMP [ ]
Derby,HSQLDB,Ingres,Postgres,SQLite,SQL Server的行为类似于Oracle,其中不允许使用括号 CURRENT_TIMESTAMP
Sybase SQL Anywhere知道一个CURRENT TIMESTAMP函数(不带括号,不带下划线)
CURRENT TIMESTAMP
CURRENT_TIMESTAMP()
追溯到1992年的SQL标准将CURRENT_TIMESTAMP称为“随时间变化的系统变量”和“ datetime值函数”。参见,例如,数据库语言SQL。
但据我所知标准一直使用CURRENT_TIMESTAMP, 从来没有 CURRENT_TIMESTAMP()。在兼容的dbms上使用CURRENT_TIMESTAMP()应该失败,并出现语法错误。
我不确定用户定义函数的标准是什么。