【发布时间】:2012-04-22 12:29:00
【问题描述】:
我的印象是,可以在函数名称后使用空括号调用无参数函数,即其他一些数据库允许这样做:
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()
【问题讨论】:
-
FWIW select CURRENT_TIMESTAMP() 是 MSSQL 中的语法错误(即只接受普通的 CURRENT_TIMESTAMP)
-
@nonnb:是的,你是对的。我会用一些背景信息更新问题
标签: sql oracle function syntax