sql - plsql使用一个立即执行命令插入多行

标签 sql oracle plsql insert bulkinsert

有没有办法在一个 EXECUTE IMMEDIATE 中插入多行?而不是为每个插入编写 EXECUTE IMMEDIATE...

最佳答案

很难说出你插入的是什么。您可以使用 EXECUTE IMMEDIATE 轻松执行 INSERT...SELECT,但我怀疑这不是您想要的,并且您可能不只是想围绕 EXECUTE IMMEDIATE 进行循环。

如果多表插入不是您想要的,您可以在 PL/SQL block 和/或 FORALL 中使用 EXECUTE IMMEDIATE

create table test_forall_dyn (val varchar2(1));

declare
  type tab_char is table of varchar2(1) index by binary_integer;
  t_char tab_char;
begin
  for i in 1..26 loop
    t_char(i) := chr(64 + i);
  end loop;
  forall i in 1..26
    execute immediate 
      'begin 
         insert into test_forall_dyn (val) values(:1);  
         insert into test_forall_dyn (val) values(:1); 
       end;' 
       using t_char(i);
end;
/

select count(*) from test_forall_dyn;

关于sql - plsql使用一个立即执行命令插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148324/

相关文章:

c# - 部署期间定位服务器 26 的 IIS 8.5 SQL 错误

sql - 查找表中大于某个值的最小值

c# - NHibernate seqhilo 如何生成 id?

linux - 在 centOS 中运行运行文件时出错 - 显示错误

oracle - 在 Oracle 存储过程中创建和使用序列 - 序列不存在

php - 通过给定字段通过 UNION 组加入 2 个表,并仅获取该组的最新信息

sql - pgbench 处理大量事务后数据库暂时断开连接

mysql - 如何在mysql中添加列值

java - 使用 JDBC 时,Oracle 在 Postgresql 中的 REF CURSOR 等效于什么?

oracle - 从 PL/SQL 函数返回多个值