我已经挣扎了一个小时来找出为什么它不能工作,我最终说‘见鬼去吧,我要去stackoverflow’:)
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;我尝试了很多不同的版本,但是没有成功!你能告诉我上面的积木出了什么问题吗?谢谢!
发布于 2017-08-01 19:42:53
我明白了,那么你不应该使用循环,你可以用一句话解决它-->
insert /*+ append */ into project_tools(pj_id,tool_id)
select /*+ parallel(8) */ ID, 81 from projects where id < 4;(并行只能在EE中工作,并且程度可以是任何高,oracle将处理它)您可以在执行插入之前通过“使会话并行”来改进它:
alter session enable parallel dml parallel 10;发布于 2017-08-01 19:50:53
也许是这样的;
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;https://stackoverflow.com/questions/45436511
复制相似问题