有没有办法在 oracle 中执行“for every”,如下所示:
begin
for VAR in {1,2,5}
loop
dbms_output.put_line('The value: '||VAR);
end loop;
end;
我知道你可以这样做:
begin
for VAR in 1..5
loop
if VAR in(1,3,5) then
dbms_output.put_line('The value: '||VAR);
end if;
end loop;
end;
但有没有一种更好的方法来做到这一点呢?定义一组值并迭代它们?
Thanks.
你可以这样做,尽管可能不像你想要的那么顺利:
declare
type nt_type is table of number;
nt nt_type := nt_type (1, 3, 5);
begin
for i in 1..nt.count loop
dbms_output.put_line(nt(i));
end loop;
end;
如果您在数据库中创建类型:
create type number_table is table of number;
那么你可以这样做:
begin
for r in (select column_value as var from table (number_table (1, 3, 5))) loop
dbms_output.put_line(r.var);
end loop;
end;
此外,正如 A.B.Cade 在下面评论的那样,您可以使用 Oracle 附带的数据库类型,例如sys.dbms_debug_vc2coll
:
begin
for r in (select column_value as var from table (dbms_debug_vc2coll (1, 3, 5))) loop
dbms_output.put_line(r.var);
end loop;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)