我已经使用PL/SQL编写了简单的代码来删除表中的多行,但是下面的代码只会在每次触发它时删除一行.
DECLARE
i number(2);
BEGIN
FOR i IN 1..4 LOOP
DELETE FROM table_name WHERE rownum = i;
dbms_output.put_line('i is: '|| i);
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
有人可以建议代码有什么问题吗?
ROWNUM 是第n行读.
select * from table_name where rownum = 1;
Run Code Online (Sandbox Code Playgroud)
让你获得第一排.
select * from table_name where rownum <= 2;
Run Code Online (Sandbox Code Playgroud)
获得前两行.
select * from table_name where rownum = 2;
Run Code Online (Sandbox Code Playgroud)
没有行,因为你没有阅读第一行就无法读取第二行.
这说,你必须更换
DELETE FROM table_name WHERE rownum = i;
Run Code Online (Sandbox Code Playgroud)
同
DELETE FROM table_name WHERE rownum = 1;
Run Code Online (Sandbox Code Playgroud)
但是你为什么要这样做呢?为什么要删除任意选择的记录?为什么要使用PL/SQL,而不仅仅是DELETE FROM table_name WHERE rownum <= 4;?