Oracle的CURRENT_TIMESTAMP功能真的是一个功能吗?

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

  • Sybase SQL Anywhere知道一个CURRENT TIMESTAMP函数(没有括号,没有下划线)
  • CUBRID,MySQL,Sybase ASE允许使用 CURRENT_TIMESTAMP()

Mik*_*ll' 7

回到1992年的SQL标准将CURRENT_TIMESTAMP称为"时变系统变量"和"日期时间值函数".例如,请参阅Database Language SQL.

但AFAIK标准总是使用CURRENT_TIMESTAMP,永远不会使用CURRENT_TIMESTAMP().在兼容的dbms上使用CURRENT_TIMESTAMP()会失败并出现语法错误.

我不确定有关用户定义函数的标准是什么.

  • `time-varying system variable`是我要找的术语.太好了,谢谢你的提示! (2认同)