首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FOR LOOP insert语句

问FOR LOOP insert语句
EN

Stack Overflow用户
提问于 2017-08-01 19:26:05
回答 2查看 64关注 0票数 0

我已经挣扎了一个小时来找出为什么它不能工作,我最终说‘见鬼去吧,我要去stackoverflow’:)

代码语言:javascript
复制
BEGIN
 FOR c IN ( SELECT ID FROM projects where id <4 )
 LOOP
   EXECUTE IMMEDIATE 'insert into project_tools(pj_id,tool_id) values(' || c || ',81)' ;
 END LOOP;
END;

我尝试了很多不同的版本,但是没有成功!你能告诉我上面的积木出了什么问题吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-01 19:42:53

我明白了,那么你不应该使用循环,你可以用一句话解决它-->

代码语言:javascript
复制
  insert /*+ append */ into project_tools(pj_id,tool_id)
  select /*+ parallel(8) */ ID, 81 from projects where id < 4;

(并行只能在EE中工作,并且程度可以是任何高,oracle将处理它)您可以在执行插入之前通过“使会话并行”来改进它:

代码语言:javascript
复制
alter session enable parallel dml parallel 10;
票数 3
EN

Stack Overflow用户

发布于 2017-08-01 19:50:53

也许是这样的;

代码语言:javascript
复制
 declare sql_text varchar(2000);
    BEGIN
     FOR c IN ( SELECT ID FROM projects where id <4 )
     LOOP
       sql_text := 'insert into project_tools(pj_id,tool_id) values(' || c || ',81)' ;
    EXECUTE IMMEDIATE sql_text;
     END LOOP;
    END;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45436511

复制
相关文章

相似问题

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