gpt4 book ai didi

sql - Oracle 的 CURRENT_TIMESTAMP 函数真的是一个函数吗?

转载 作者:行者123 更新时间:2023-12-04 18:23:25 25 4
gpt4 key购买 nike

我的印象是,可以在函数名称后使用空括号调用无参数函数,即其他一些数据库允许执行的操作:

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()
  • 最佳答案

    1992 年的 SQL 标准将 CURRENT_TIMESTAMP 称为“时变系统变量”和“日期时间值函数”。例如,参见 Database Language SQL .

    但 AFAIK 标准总是使用 CURRENT_TIMESTAMP,而不是 CURRENT_TIMESTAMP()。在兼容的 dbms 上使用 CURRENT_TIMESTAMP() 应该会因语法错误而失败。

    我不确定标准对用户定义的函数有什么看法。

    关于sql - Oracle 的 CURRENT_TIMESTAMP 函数真的是一个函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10084967/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com