在 FOR 循环中第一次记录 select 20 时出现错误,并在 oracle 中再次休息
Getting error while select 20 record for first time in FOR loop and rest for anther time in oracle
在 Oracle 中,我通过使用 PL/SQL 变量 type v_arr is varray(25) of varchar2(20)
获得了总共 36 条记录。在 PL/SQL 块内,我使用 2 个不同的 FOR loop
进行 2 个不同的操作。我第一次使用
For i in 1 .. v_arr.count(20) loop
下次我使用 for i in v_arr.count(21) .. v_arr.count loop
。
编译后我在两种情况下都出错了。如何解决这个问题。请帮助我。
我想你想要这个
SQL> set serveroutput on;
SQL> declare
type a_arr is varray(20) of varchar2(20);
arr a_arr:=a_arr('un1','un2','un3','un4','un5','un6','un7','un8','un9','un10',
'un11','un12','un13','un14','un15','un16','un17','un18','un19','un20');
begin
for i in 1..arr.count
loop
dbms_output.put_line(arr(i));
end loop;
end;
以 Barbaros 的例子为基础,也许您想要这样的东西:
declare
type a_arr is table of varchar2(20);
arr a_arr := a_arr
( 'un1','un2','un3','un4','un5','un6','un7','un8','un9','un10'
, 'un11','un12','un13','un14','un15','un16','un17','un18','un19','un20'
, 'x1','x2','x3' );
begin
for i in 1..least(arr.count,20) loop
dbms_output.put_line(arr(i));
end loop;
if arr.count > 20 then
for i in 21..arr.count loop
dbms_output.put_line(arr(i));
end loop;
end if;
end;
在 Oracle 中,我通过使用 PL/SQL 变量 type v_arr is varray(25) of varchar2(20)
获得了总共 36 条记录。在 PL/SQL 块内,我使用 2 个不同的 FOR loop
进行 2 个不同的操作。我第一次使用
For i in 1 .. v_arr.count(20) loop
下次我使用 for i in v_arr.count(21) .. v_arr.count loop
。
编译后我在两种情况下都出错了。如何解决这个问题。请帮助我。
我想你想要这个
SQL> set serveroutput on;
SQL> declare
type a_arr is varray(20) of varchar2(20);
arr a_arr:=a_arr('un1','un2','un3','un4','un5','un6','un7','un8','un9','un10',
'un11','un12','un13','un14','un15','un16','un17','un18','un19','un20');
begin
for i in 1..arr.count
loop
dbms_output.put_line(arr(i));
end loop;
end;
以 Barbaros 的例子为基础,也许您想要这样的东西:
declare
type a_arr is table of varchar2(20);
arr a_arr := a_arr
( 'un1','un2','un3','un4','un5','un6','un7','un8','un9','un10'
, 'un11','un12','un13','un14','un15','un16','un17','un18','un19','un20'
, 'x1','x2','x3' );
begin
for i in 1..least(arr.count,20) loop
dbms_output.put_line(arr(i));
end loop;
if arr.count > 20 then
for i in 21..arr.count loop
dbms_output.put_line(arr(i));
end loop;
end if;
end;