首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle PL/SQL中的大容量更新

Oracle PL/SQL中的大容量更新
EN

Stack Overflow用户
提问于 2016-10-18 15:36:07
回答 1查看 907关注 0票数 0

我有一张这样的桌子:

代码语言:javascript
复制
table_name     SQL_statement               id_value      result

employee       select ... where ..= :1    101           
customer       select ....where ..= :1    903       
  1. 大约有6-8张不同的桌子。
  2. ID_VALUE作为参数提供给SQL_Statement
  3. SQL语句将始终返回一行。
  4. 以上"c“的结果应存储在结果列中。

我知道我可以使用立即执行,但是这会在SGA中产生困难的解析。

这里可以使用哪种散装技术?

EN

回答 1

Stack Overflow用户

发布于 2016-10-18 17:05:27

如果您可以假设该语句总是提取带有固定别名的单个值,则可以尝试以下操作。

设置:

代码语言:javascript
复制
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语句。

更新:

代码语言:javascript
复制
update yourTable
set result = extractvalue(xmltype(dbms_xmlgen.getxml(replace (SQL_statement, ':1', id_value))),'/ROWSET/ROW/RESULT')

结果:

代码语言:javascript
复制
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         10
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40112454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档