Oracle的CURRENT_TIMESTAMP函数真的是一个函数吗?
技术问答
223 人阅读
|
0 人回复
|
2023-09-12
|
我给人的印象是,无参数函数可以在函数名称后的空括号中调用,即其他数据库允许执行的操作:" W8 W( h O9 ^2 F
current_timestamp()而在Oracle中,我必须写" E) q! O Y5 g$ ^& Y; K D
current_timestamp本规则不适用于用户定义的函数(11g中)。我可以写
3 ]) h: [& x" V9 `! B' ~my_functionmy_function()我的问题是:- s0 V$ U. c# x' e- o
是CURRENT_TIMESTAMP这是一个真正的功能,或者我应该认为它是在Oracle- y7 A$ `7 Y% b
SQL方言(SQL语言结构/伪列的标准兼容性?什么时候可以强制添加(),什么时候必须省略?/ t- I3 d, Z. x4 f$ o" ]# K
背景信息:
+ }; k0 M# G/ B: c# m/ v9 ^SQL 1992定义:* h! s! Q o2 b; x
::=CURRENT_TIMESTAMP [ ]Derby,HSQLDB,Ingres,Postgres,SQLite,SQL Server类似的行为Oracle,括号 CURRENT_TIMESTAMP
2 t5 O: ]8 ^: |! a7 ^Sybase SQL Anywhere知道一个CURRENT TIMESTAMP函数(无括号,无下划线)
I# X, E1 S; e3 MCUBRID,MySQL,Sybase ASE允许使用 CURRENT_TIMESTAMP()
4 Y& z `. r( C0 g! d8 ]& u 解决方案:
8 }. W4 P) |/ B4 p 追溯到1992年的SQL标准将CURRENT_TIMESTAMP被称为随时间变化的系统变量和
5 ^4 w" O! Z2 e1 x" t: k( Ldatetime值函数。例如,数据库语言SQL。
& M! b/ l' }+ h! d3 k3 C$ C但据我所知标准一直使用CURRENT_TIMESTAMP,从来没有
7 m& D1 I& j9 v6 j4 ^ ~( j. YCURRENT_TIMESTAMP()dbms上使用CURRENT_TIMESTAMP()应失败,并出现语法错误。7 e* y- a8 U2 R( Z; F1 Y0 M/ S/ v
我不确定用户定义函数的标准是什么。 |
|
|
|
|
|