没有必要用过程,显式游标insert into table_B (id,name) select id,name from table_A;
假设你的游标cursor1中包含记录集有两项(a,b),你想插入表table2(a,b)中 可以这样写: .... begin for cc in cursor1 loop ----cc可以随便起名字 insert into table2(a,b) values(cc.a,cc.b); end loop; commit; end;
一句SQL就可以搞定啊。。 为什么要用过程,游标?
呵呵,批量插入的话Pro*C/C++可以做到 insert for 100 into ... pl/sql里没有批量操作(因为不需要) 可以直接用1楼的SQL或2楼的游标操作都可以,根据需要。 批量操作是为了减少客户端和服务端之间的网络通信,因为网络通信通信的时间可能要比数据库操作的时间大一个数量级!想象一下,当客户端请求fetch一条记录发给服务端,然后服务端接到请求,fetch一条记录,再传给客户端,这么逐条进行,多浪费时间!批量操作的话,直接告诉服务端我要fetch一批记录(最多100条),服务端取完记录会一起发给客户端,这样节省时间!pl/sql作为在服务端运行的代码,就不需要批量操作了!
可以这样写:
....
begin
for cc in cursor1 loop ----cc可以随便起名字
insert into table2(a,b) values(cc.a,cc.b);
end loop;
commit;
end;
为什么要用过程,游标?
pl/sql里没有批量操作(因为不需要) 可以直接用1楼的SQL或2楼的游标操作都可以,根据需要。
批量操作是为了减少客户端和服务端之间的网络通信,因为网络通信通信的时间可能要比数据库操作的时间大一个数量级!想象一下,当客户端请求fetch一条记录发给服务端,然后服务端接到请求,fetch一条记录,再传给客户端,这么逐条进行,多浪费时间!批量操作的话,直接告诉服务端我要fetch一批记录(最多100条),服务端取完记录会一起发给客户端,这样节省时间!pl/sql作为在服务端运行的代码,就不需要批量操作了!
insert into a select ....