您可以通过查询*_TAB_COLS字典视图来确定列的数据类型.但是,这些都基于表,而不是查询.要实现这一点,"动态"将是非常困难的,因为您需要解析传入的查询(在您的代码中),找出查询中每列所属的表并发出以下内容:
select data_type
from all_tab_cols
where table_name = :table
and column_name = :column;
Run Code Online (Sandbox Code Playgroud)
然后根据需要更新查询并提交以供执行.这将很难写,很可能很慢.
您可以通过使用XMLTYPE创建表的视图,在视图中执行转换并让用户对视图而不是基础表执行查询来执行您想要的操作:
create table tab (x xmltype, y integer);
create or replace view tab_v as
select t.x.getClobVal() x, y
from tab t;
select table_name, data_type from all_tab_cols
where column_name = 'X'
and table_name like 'TAB%';
TABLE_NAME DATA_TYPE
------------------------------ --------
TAB XMLTYPE
TAB_V CLOB
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |