回答

收藏

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
我不确定用户定义函数的标准是什么。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则