我用PL/SQL编写了下面的程序,在Students表中插入5行。根据循环条件,行计数应该是5,但它只显示了1。将DBMS输出置于循环下也无济于事。
DECLARE
v_input_1 INT;
v_input_2 VARCHAR2(15);
v_input_3 VARCHAR2(10);
v_counter NUMBER := 10;
BEGIN
v_input_1:= 0;
v_input_2:= &Type_student_name;
v_input_3:= &Type_student_class;
LOOP
INSERT INTO STUDENTS(id, student_name, student_class)
VALUES(v_input_1+v_counter, v_input_2, v_input_3);
v_counter:=v_counter+10;
EXIT WHEN V_counter > 50;
--DBMS_OUTPUT.PUT_LINE('Total rows inserted : '||SQL%ROWCOUNT);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Total rows inserted : '||SQL%ROWCOUNT);
END;
在您的示例中,当您一次插入一行(insert into ... values ...
(时,SQL%ROWCOUNT
在每次迭代中都设置为1。
因此,在这种情况下,它几乎毫无用处。创建一个局部变量并每次递增(类似于v_counter
(,例如
declare
l_cnt number := 0;
begin
loop
insert ...
l_cnt := l_cnt + sql%rowcount;
end loop;
dbms_output.put_line('Number of inserted rows = ' || l_cnt);
end;