gpt4 book ai didi

sql - 如何获取参与 SQL for Oracle 的字段列表?

转载 作者:行者123 更新时间:2023-12-05 01:15:08 26 4
gpt4 key购买 nike

我正在编写一个用户可以输入 SQL 并获得结果的小型应用程序。我注意到我的应用程序无法处理 XMLTYPE 列(我正在使用 ADO)。是否可以“询问”oracle 哪些字段参与了 SQL 的选择部分,以便我可以用“getclobval()”函数即时替换 XMLTYPE 字段?

最佳答案

您可以通过查询 *_TAB_COLS 字典 View 来确定列的数据类型。但是,这些都是基于表,而不是查询。要“即时”执行此操作将非常困难,因为您需要解析传入的查询(在您的代码中),找出查询中的每一列属于哪个表并发出以下命令:

select data_type 
from all_tab_cols
where table_name = :table
and column_name = :column;

然后根据需要更新查询并提交执行。这将很难编写并且很可能很慢。

您可以通过使用 XMLTYPE 在表上创建 View 、在 View 中进行转换并让用户针对 View 而不是基础表执行查询来执行您想要的操作:

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

关于sql - 如何获取参与 SQL for Oracle 的字段列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com