如何在for循环ORACLE中获取数组中的数组值

Posted

技术标签:

【中文标题】如何在for循环ORACLE中获取数组中的数组值【英文标题】:How can I get the value of array inside an array in for loop ORACLE 【发布时间】:2014-01-21 01:25:08 【问题描述】:

谁能帮助我。 这是参数数组中的一个示例。 我要获取数组的值是“ID”中的数组[3]和ID“EMP01658”的VALUE。

数组 ( [1] => DC0001 [2] => DC0002 [3] => 数组 ( [ID] => EMP01658 ) )

这是我的 PL SQL 代码;

--这是我的包全局变量

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;

谢谢。 :)

【问题讨论】:

对不起,我不知道你在问什么。请显示更完整的代码。 您好,先生,我刚刚编辑了它,请检查先生,非常感谢您 请看这个问题和答案:Creating or simulating two dimensional arrays in PL/SQL. 【参考方案1】:

VARCHAR2 与数组(集合或 PL/SQL 表)不同,因此不能被索引。您需要使用 Oracle 的字符串函数。下面是一个打印出每个 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

【讨论】:

顺便说一句,请告诉我你真的不用8i吗? 嘿先生,谢谢你的回答,我现在就试试这个。哈哈,是的,先生,我仍在使用 Oracle 8i,但我现在将我所有的工作上传到 oracle 11g SAMPLE ARRAY: Array ( [1] => DC0001 [2] => DC0002 [3] => Array ( [ID] => EMP01658 ) )你好,先生,嗯,我想得到数组的值是“ID”中的数组[3]和ID的值“ EMP01658"。你能分享我一些获取ID值的技巧吗?我找不到其他方法来做到这一点。再次感谢您,先生:)

以上是关于如何在for循环ORACLE中获取数组中的数组值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 for 循环中使用动态键值从 JSON 数组获取值?科特林

如何在 if 语句和 for 循环之外获取数组

如何使用for循环在mpdf PHP中打印数组中的值

循环获取数据库中的值并赋值给数组

如何在一个循环执行ajax方法里面嵌套的ajax方法

无法使用 jquery 获取 datalist 中的数组数据