首页 > 解决方案 > 返回Oracle中表达式的数据类型

问题描述

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

例如,在 Teradata 我可以写

SELECT TYPE(4 + 4); 

并获得整数。但在 Oracle 中同样行不通

SELECT TYPE(4 + 4)
  FROM dual;

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

标签: sqloracle

解决方案


不幸的是,TYPE()Oracle 中没有任何功能。

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

select dump(4+4) from dual;

DUMP(4+4)         
------------------
Typ=2 Len=2: 193,9

这将数据类型显示为 2。然后您需要查看文档以了解其含义。例如:

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

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

屁股还是很痛,但至少有办法。

唉,Oracle 似乎没有在 db 中提供表(代码、data_type),但您可以自己构建一个 - 然后您可以将它与它结合起来,DUMP这样您就可以始终在单个SELECT.


推荐阅读