Luk*_*der 4 sql oracle syntax function
我的印象是,在函数名之后可以使用空括号调用无参数函数,即其他一些数据库允许执行的操作:
current_timestamp()
Run Code Online (Sandbox Code Playgroud)
而在Oracle中,我必须写
current_timestamp
Run Code Online (Sandbox Code Playgroud)
使用用户定义的函数,此规则不适用(在11g中).我可以写两个
my_function
my_function()
Run Code Online (Sandbox Code Playgroud)
我的问题是:是CURRENT_TIMESTAMP真是名副其实的功能或者我应该认为它是在Oracle SQL方言(SQL标准兼容)的语言结构/伪列?有什么时候我可以(可选地,强制性地)添加()和当我必须省略它们时有任何正式定义吗?
背景信息:
SQL 1992定义:
<current timestamp value function> ::=
CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
Run Code Online (Sandbox Code Playgroud)Derby,HSQLDB,Ingres,Postgres,SQLite,SQL Server的行为类似于Oracle,其中没有括号允许 CURRENT_TIMESTAMP
CURRENT TIMESTAMP函数(没有括号,没有下划线)CURRENT_TIMESTAMP()回到1992年的SQL标准将CURRENT_TIMESTAMP称为"时变系统变量"和"日期时间值函数".例如,请参阅Database Language SQL.
但AFAIK标准总是使用CURRENT_TIMESTAMP,永远不会使用CURRENT_TIMESTAMP().在兼容的dbms上使用CURRENT_TIMESTAMP()会失败并出现语法错误.
我不确定有关用户定义函数的标准是什么.