私はいくつかの他のデータベースを行うことができどのようなつまり、引数なしの関数は、関数名の後に空の括弧を呼び出すことができるという印象の下にあった:OracleのCURRENT_TIMESTAMP関数は実際に関数ですか?
current_timestamp()
オラクルでは、私は
を記述する必要がありに対しcurrent_timestamp
ユーザー定義関数では、この規則は適用されません(11g)。私は書くことができ、両方の
my_function
my_function()
私の質問は:は本当に本当の機能CURRENT_TIMESTAMP
ですか、私はそれが(SQL標準との互換性)のOracle SQL方言の言語構造/擬似列であることを考慮しなければなりませんか? ()
をいつ追加することができますか(必須ではありません)、それを省略しなければならないときは正式な定義はありますか?
背景-情報:
SQL 1992は定義されています。
<current timestamp value function> ::= CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
をダービー、HSQLDB、アングル、Postgresの、SQLiteの、SQL Serverは
CURRENT_TIMESTAMP
に許さ括弧がなけれオラクル、のように振る舞います- Sybase SQL Anywhereは、
CURRENT TIMESTAMP
関数(括弧なし、アンダースコアなし)を認識します - のSybase ASEが戻って1992から
CURRENT_TIMESTAMP()
FWIW select CURRENT_TIMESTAMP()はMSSQLの構文エラーです(つまり、CURRENT_TIMESTAMPのみが受け入れられます)。 – StuartLC
@nonnb:はい、そうです。私はいくつかの背景情報で質問を更新します –