FOR ALL 后的DML语句如DELETE FROM 只能有一条吗?

limaowa 2009-04-07 06:04:45
现在有个LARGE delete的问题,程序代码如下:
declare
type IDTab is table of STU.ID%type;
type NameTab is table of STU.NAME%type;
pid IDTab;
pname NameTab;
i INT;
cursor c1 is select ID ,NAME FROM STU;
begin
OPEN C1;
FETCH C1 bulk collect into pid,pname ;

forALL i in 1..10
INSERT INTO STU1 VALUES (pid(i),pname(i));
--INSERT INTO STU2 VALUES (pid(i),pname(i));
end;

这里需要对多个表进行INSERT或者DELETE的操作,但是经过测试,发现只能有一条INSERT/DELETE命令,请问各位大侠,还有其他的方法可以实现多条DML语句在这里执行吗?
例如,将最后一个注释掉的INSERT释放出来后,怎样可以成功呢?
建表脚本如下,可以做一些样本数据测试,谢谢!
CREATE TABLE STU
( "ID" NUMBER,
"NAME" VARCHAR2(10)
)
...全文
155 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
宇尘埃 2009-04-08
  • 打赏
  • 举报
回复
每个forall语句 后确实只能跟一个语句。

建议用for loop
宇尘埃 2009-04-08
  • 打赏
  • 举报
回复
用for语句:

for i in 1..10 loop

INSERT INTO STU1 VALUES (pid(i),pname(i));
INSERT INTO STU2 VALUES (pid(i),pname(i));

end loop;
limaowa 2009-04-08
  • 打赏
  • 举报
回复
forall 后只能跟一个语句,不能跟多个.
只能写多个forall,每个跟一个了.

多谢,欢迎以后继续指教!
又是违规昵称 2009-04-08
  • 打赏
  • 举报
回复
楼上两位意见好像不一致
oracledbalgtu 2009-04-08
  • 打赏
  • 举报
回复
forall 后只能跟一个语句,不能跟多个.
只能写多个forall,每个跟一个了.


[Quote=引用楼主 limaowa 的帖子:]
现在有个LARGE delete的问题,程序代码如下:
declare
type IDTab is table of STU.ID%type;
type NameTab is table of STU.NAME%type;
pid IDTab;
pname NameTab;
i INT;
cursor c1 is select ID ,NAME FROM STU;
begin
OPEN C1;
FETCH C1 bulk collect into pid,pname ;

forALL i in 1..10
INSERT INTO STU1 VALUES (pid(i),pname(i));
--INSERT INTO STU2 VALUES (pid(i),pname(i));
end;


[/Quote]
jdsnhan 2009-04-08
  • 打赏
  • 举报
回复
不会啊。第二条语句可以正确执行的。我一直这么用。

LZ说发现只能有一条,你是如何发现的? 有什么错误提示?

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧