本人新手一個,寫了一個存盤程序,完整代碼如下,沒有什么實際作用,不要給我說怎么寫更好,我就想50條提交一次。
create or replace procedure piciCommit as
v_count number;
v_num number;
BEGIN
v_count:=0;
v_num:=1;
--for cur in (select * from emp) loop --如果使用這兩行,就能正常編譯,正常運行。
--insert into emp1 values cur;
--*********用下面的這兩行編譯時就會報沒有足夠的值錯誤,但是列數也相同啊,emp1表結構和emp表完全一樣,所有列都允許為空,允許重復。
for cur in (select empno,ename,job,sal,deptno from emp) loop
insert into emp1(empno,ename,job,sal,deptno) values cur;
--*****************
v_count:=v_count+1;
dbms_output.put_line('第'||v_count||'條');
if v_count>=50 then
dbms_output.put_line('---------------------------------第'||v_num||'次commit---------------------------------');
v_num:=v_num+1;
commit;
v_count:=0;
end if;
end loop;
dbms_output.put_line('---------------------------------第'||v_num||'次commit---------------------------------');
commit;
end;
還請各位大神給看看,謝謝了!
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
insert into emp1(empno,ename,job,sal,deptno) values cur;換成insert into emp1 values cur;就可以了uj5u.com熱心網友回復:
不是的,我在百度知道已經得到答案了,應該把insert into emp1(empno,ename,job,sal,deptno) values cur;
這行代碼改成
insert into emp1(empno,ename,job,sal,deptno) values (cur.empno,cur.ename,cur.job,cur.sal,cur.deptno);
就行了,他報的錯誤時insert陳述句的values個數和列的個數不一致,不是兩張表的欄位個數不一致,是我粗心了。
uj5u.com熱心網友回復:
而且你這種寫法也不規范,正常模式下寫成open cursor,select into,insert into,close cursor這種模式更容易理解,也具有更好排錯性和可讀性
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/83835.html
標籤:開發
上一篇:mysql陳述句查詢問題
