我的印象是,在函数名称之后可以使用空括号调用无参数函数,即其他一些数据库允许执行的操作:
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
CURRENT TIMESTAMP
函数(没有括号,没有下划线)CURRENT_TIMESTAMP()
答案 0 :(得分:7)
回溯到1992年的SQL标准将CURRENT_TIMESTAMP称为“时变系统变量”和“日期时间值函数”。例如,请参阅Database Language SQL。
但AFAIK标准总是使用CURRENT_TIMESTAMP,从不 CURRENT_TIMESTAMP()。在兼容的dbms上使用CURRENT_TIMESTAMP()会因语法错误而失败。
我不确定标准对用户定义的函数有什么看法。