Oracle中表达式的返回数据类型

Err*_*646 4 sql oracle

Oracle 有没有办法获取表达式的数据类型?

例如,在 Teradata 中我可以写

SELECT TYPE(4 + 4); 
Run Code Online (Sandbox Code Playgroud)

并得到整数。但同样的方法在 Oracle 中不起作用

SELECT TYPE(4 + 4)
  FROM dual;
Run Code Online (Sandbox Code Playgroud)

返回错误。我知道我可以查看表格说明,但如果可能的话,这种方式会派上用场。

小智 6

不幸的是,TYPE()Oracle 中没有这个函数。

一种方法是使用该DUMP函数,如下所示:

select dump(4+4) from dual;

DUMP(4+4)         
------------------
Typ=2 Len=2: 193,9
Run Code Online (Sandbox Code Playgroud)

这显示数据类型为2。然后你需要检查文档来了解这意味着什么。例如:

https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#BABCGCHG

这里可以看到Code=2对应的数据类型NUMBER

虽然还是很痛苦,但至少有办法。

唉,Oracle 似乎没有在数据库中提供表(代码,data_type),但您可以自己构建一个表 - 然后您可以将其组合起来,DUMP以便您始终可以在单个SELECT.