任何人都可以帮助我如何在for循环ORACLE中获取数组内的数组值。 这是IN PARAMETER数组的示例。 我想得到数组的值是“ID”中的数组[3]和ID“EMP01658”的值。
阵 ( [1] => DC0001 [2] => DC0002 [3] =>排列 ( [ID] => EMP01658 ) )
这是我的PL SQL代码;
- 这是我的Package全局变量
CREATE OR REPLACE PACKAGE PKG_GLB_VARIABLES
IS
TYPE refcursor IS REF CURSOR;
TYPE val_Array IS TABLE OF VARCHAR2(3000) INDEX BY BINARY_INTEGER;
END;
- 这是我的程序
CREATE OR REPLACE PROCEDURE Proc_Array(
param_Array IN pkg_glb_variables.val_Array
)
IS
BEGIN
for i in 1 .. param_Array.count
loop
DBMS_OUTPUT.put_line('aRRay('||i||') :'||param_Array(i));
IF param_Array(i)='Array' THEN
DBMS_OUTPUT.put_line('UY MAY ISA PANG ARRAY!');
for i_2 in 1 .. param_Array(i).count
loop
DBMS_OUTPUT.put_line('aRRay('||i_2||') :'||param_Array(i_2));
end loop;
END IF;
end loop;
END;
谢谢。 :)
答案 0 :(得分:2)
VARCHAR2与数组(集合或PL / SQL表)不同,不能像这样索引。您需要使用Oracle的String函数。下面是打印每个varchar2数组元素的每个字符的示例:
CREATE OR REPLACE PROCEDURE Proc_Array(
param_Array IN pkg_glb_variables.val_Array
)
IS
vElement VARCHAR2(3000);
vLength PLS_INTEGER;
BEGIN
for i in 1 .. param_Array.count
loop
DBMS_OUTPUT.put_line('aRRay('||i||') :'||param_Array(i));
vElement := param_array(i);
vLength := length(vElement);
for i_2 in 1 .. vLength
loop
DBMS_OUTPUT.put_line('aRRay('||i_2||') :'||
substr(vElement,i_2,1) );
end loop;
end loop;
END;
调用程序的测试:
declare
a pkg_glb_variables.val_Array;
begin
a(1) := 'HELLO';
a(2) := 'goodbye';
proc_array ( a );
end;
生成的dbms_output:
my output - aRRay(1) :HELLO
my output - aRRay(1) :H
my output - aRRay(2) :E
my output - aRRay(3) :L
my output - aRRay(4) :L
my output - aRRay(5) :O
my output - aRRay(2) :goodbye
my output - aRRay(1) :g
my output - aRRay(2) :o
my output - aRRay(3) :o
my output - aRRay(4) :d
my output - aRRay(5) :b
my output - aRRay(6) :y
my output - aRRay(7) :e