在多层嵌套表变量中查找值并更新另一个值

时间:2019-08-22 02:36:15

标签: variables nested multi-level

我需要找到一种更新变量的最佳方法,该变量是对象表(多级嵌套表)的表,该表由包中的过程中的参数通过元素值接收。

我试图在示例中执行代码伪代码以学习如何使用,但是我不知道如何在这种类型的对象中导航,因为它是对象表的表。

CREATE OR REPLACE TYPE o_people AS OBJECT (
                             name     varchar2(100)
                            ,surname  varchar2(100)
                            ,active   char(1)
                           );
/

CREATE OR REPLACE TYPE t_people IS TABLE OF o_people;
/

CREATE OR REPLACE TYPE t_resultset IS TABLE OF t_people;
/

DECLARE   obj          o_people; 
          obj1         o_people;
          v_people     t_people;
          v_resultset  t_resultset;
begin
    obj := o_people(
                     name             => 'John'
                    ,surname           => 'Doe'
                    ,active           => '1'
                    );

    obj1 := o_people(
                     name             => 'Lisa'
                    ,surname           => 'Ann'
                    ,active           => '1'
                    )
                    ;

    v_people := t_people(obj,obj1);

    v_resultset := t_resultset(v_people);

    FOR v_index IN 1..v_resultset.last LOOP
      --IF v_resultset(v_index).t_people.name = 'Lisa' AND v_resultset(v_index).t_people.surname = 'Ann' THEN
        v_resultset(v_index) := t_people(o_people ( name             => 'Lisa'
                                                  ,surname           => 'Ann'
                                                  ,active           => '0'
                                                  ));
        --END IF;

        --DBMS_OUTPUT.PUT_LINE(v_resultset(v_index).t_people.o_people.name);
    END LOOP;      
END;

请给我一些方法来做我需要的事情。 更新所有满足条件的值,在这种情况下,名称为“ Lisa”,姓为“ Ann”,将active = 0设置为该多层嵌套表中的所有“ Lisa Ann”。

我先由衷地感谢。

0 个答案:

没有答案