我的印象是,可以在函数名称后使用空括号调用无参数函数,即其他一些数据库允许这样做:
current_timestamp()
而在 Oracle 中,我必须写
current_timestamp
对于用户定义的函数,此规则不适用(在 11g 中)。我两个都可以写
my_function
my_function()
我的问题是:真的CURRENT_TIMESTAMP
是一个真正的函数还是我应该将其视为 Oracle SQL 方言的语言构造/伪列(与 SQL 标准兼容)?关于何时可以(可选地,强制地)添加()
以及何时必须省略它们,是否有任何正式定义?
背景信息:
SQL 1992定义:
<current timestamp value function> ::= CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
Derby、HSQLDB、Ingres、Postgres、SQLite、SQL Server 的行为类似于 Oracle,其中不允许使用括号
CURRENT_TIMESTAMP
- Sybase SQL Anywhere 知道
CURRENT TIMESTAMP
函数(不带括号,不带下划线) - CUBRID、MySQL、Sybase ASE 允许使用
CURRENT_TIMESTAMP()