不带参数的Oracle函数

Web*_*tor 4 oracle function

为什么说CURRENT_DATECURRENT_TIMESTAMPSYSDATE,和SYSTIMESTAMP被称为没有括号。我知道它们没有参数,但是在其他语言中,您仍然可以使用括号来调用函数。在Oracle中是否永远不会使用参数的任何函数都不能用括号调用?

如果有人可以指出我的文档,我将不胜感激。

mat*_*guy 6

Oracle在许多方面都很奇怪。它在很多方面起着快速而松散的作用:的含义NULL,隐式数据类型转换以及大量其他内容。

正如您所注意到的那样,它们当中没有用于调用没有参数的函数的语法不一致。(有关声明此类功能的信息,请参见下文。)

不使用参数的本地函数(如sysdate和)必须写成无括号。您要求提供文档...最直接(但也不完全令人满意)的指针指向每个函数的文档,其中语法非常清楚地显示,没有括号。您在寻找什么-文档中有单独提及,他们在其中明确说明?current_timestamp

将其与rownumber()不带参数的分析函数(例如)进行比较。您必须空括号写出来!

更糟糕:对于函数,您使用PL / SQL 编写自己的代码,然后从SQL语句调用:如果函数不带参数,则必须在不带括号的情况下进行定义。但是,当您调用它时(select例如,在一条语句中),您可以在 不带(空)括号的情况下调用它-两种语法均有效。so,不是这样,它具有原生功能sysdate。为什么?再次,问甲骨文一个好问题。

它也不止于此。connect_by_root是“分层功能”(可以在分层查询中使用的功能)。它带有一个参数-可以在括号中(就像在任何普通函数中一样)或不带括号!去搞清楚。

如果您问为什么?- 你不是一个人。我也不知道