我有一张这样的桌子:
table_name SQL_statement id_value result
employee select ... where ..= :1 101
customer select ....where ..= :1 903 我知道我可以使用立即执行,但是这会在SGA中产生困难的解析。
这里可以使用哪种散装技术?
发布于 2016-10-18 17:05:27
如果您可以假设该语句总是提取带有固定别名的单个值,则可以尝试以下操作。
设置:
create table yourTable(table_name varchar2(30), SQL_statement varchar2(100), id_value number, result number);
insert into yourTable
(
select 'employee', 'select :1 *2 as result from dual', 1, null from dual union all
select 'customer', 'select :1 as result from dual', 10, null from dual
);给定别名result,可以使用单个update语句。
更新:
update yourTable
set result = extractvalue(xmltype(dbms_xmlgen.getxml(replace (SQL_statement, ':1', id_value))),'/ROWSET/ROW/RESULT')结果:
SQL> select *
2 from yourTable;
TABLE_NAME SQL_STATEMENT ID_VALUE RESULT
---------- ---------------------------------------- ---------- ----------
employee select :1 *2 as result from dual 1 2
customer select :1 as result from dual 10 10https://stackoverflow.com/questions/40112454
复制相似问题