sql - 将 Oracle 查询应用于表列表
问题描述
我有一个标记为“TableA_101818”、“TableB_101818”等的 Oracle 实例中的表列表,我想在一个查询中更新所有这些表。我知道我可以使用以下方法获取表格列表:
SELECT table_name FROM all_tables WHERE table_name LIKE 'Table%_101818'
但我不确定如何应用类似的东西:
UPDATE (SELECT table_name FROM all_tables WHERE table_name LIKE 'Table%_101818)
SET COL1 = 'something' WHERE col2 = 'something else'
解决方案
您可以使用动态 SQL:
begin
for r in (SELECT table_name FROM all_tables
WHERE table_name LIKE 'Table%_101818')
loop
dbms_output.put_line('SELECT * FROM ' || r.table_name ||
q'{ WHERE col2 = 'something else';}');
execute immediate 'UPDATE ' || r.table_name ||
q'{ SET COL1 = 'something' WHERE col2 = 'something else'}';
end loop;
commit;
end;
/
推荐阅读
- python - Python正则表达式:仅当模式重复n次时才匹配
- node.js - Redux createStore,compose 函数 - 这段代码是如何工作的?
- android - 将联系人导出到 vCard 时出现错误“java.lang.NegativeArraySizeException:-1”
- android - 带有圆角和两侧阴影的 android cardview
- hyperledger-fabric - 在 Hyperledger Fabric 中为用户身份设置 PEM 属性
- user-interface - 如何用按钮排列弹出菜单
- r - 在 geom_bar 中使用闪避条居中条
- python - 是否可以根据规则\模式训练\调整带有“提示”的spacy NER模型
- ios - 在 WKWebView 中使用 inputAccessoryView
- web-scraping - 如何在 Node-red 中抓取网站