我想遍历一个字符串列表并执行一个函数/过程,每个字符串作为参数.
set serveroutput on; begin FOR r IN ('The','Quick','brown','fox') LOOP dbms_output.put_line( r ); END LOOP; end;
我假设可能有这种模式.
解决方法
只是为了完整性,一个纯粹的PL / sql解决方案.
sql> set serveroutput on sql> sql> declare 2 my_array sys.dbms_debug_vc2coll 3 := sys.dbms_debug_vc2coll('The','fox'); 4 begin 5 for r in my_array.first..my_array.last 6 loop 7 dbms_output.put_line( my_array(r) ); 8 end loop; 9 end; 10 / The Quick brown fox PL/sql procedure successfully completed. sql>
这使用了preredred sys.dbms_debug_vc2coll数据类型,它具有相当大的定义……
sql> desc sys.dbms_debug_vc2coll sys.dbms_debug_vc2coll TABLE OF VARCHAR2(1000) sql>
……所以,就像加里说的那样,你可能希望宣布自己的.特别是如果你的琴弦很短并且你有很多.