sql - 如何使用列值作为选择表达式
问题描述
有一个表包含一个包含 SQL 选择表达式的列。请参见以下示例:
╔════╦════════╦═══════════════════════════════════════════╗
║ ID ║ Code ║ Expression ║
║ 1 ║ B12321 ║ SELECT * FROM table WHERE code LIKE '%' ║
║ 2 ║ A35525 ║ SELECT * FROM table WHERE code = '1234' ║
║ 3 ║ C23213 ║ SELECT * FROM table WHERE code <> '%D' ║
╚════╩════════╩═══════════════════════════════════════════╝
我想遍历表达式列,执行这些语句并将结果插入另一个表。这甚至可能吗?我找不到与此相关的问题。除此之外,我读到了一个使用游标循环遍历表格的内容,但对此有很多负面影响。
如果可能的话,您能否提供有关我遇到的问题的有用链接,或者提供更好的示例代码。
解决方案
您需要动态 SQL。由于您不想返回任何数据,因此可以使用一个小的 PL/SQL 过程来实现:
create or replace procedure insert_by_code(in_code varchar2) as
begin
for rec in (select expression from mytable where code = in_code) loop
execute immediate 'insert into other_table ' || rec.expression;
commit;
end loop;
end insert_by_code;
或带有匿名块的临时:
begin
for rec in (select expression from mytable where code = :code) loop
execute immediate 'insert into other_table ' || rec.expression;
commit;
end loop;
end;
推荐阅读
- wordpress - 如何在 WSL + VS Code 和 Docker 容器之间设置文件所有权?
- python - 带有 pytorch 的二维向量化函数
- sql-server - 当第一列有多个单词时,从一列中的字符串中删除最后一个单词并作为字符串放在现有的空列中?SQL 服务器
- amazon-web-services - 如何使用 AWS SAM 更新现有的 lambda 函数
- sas - SAS使用循环根据其他列的值添加新的多列
- javascript - 我想要使用 JS 正则表达式在字符串中出现双字符的计数
- c# - unity raycast CS1003: ',' 预期
- javascript - 如何将html信息重新加载到js文件?
- twilio - 有没有办法在不使用 webhook 的情况下获得对通过可编程消息发送的消息的响应
- bert-language-model - 在测试BERT模型期间分配权重