如何将数据插入TABLE类型变量

Rad*_*hiu 7 oracle oracle11g

我期待很多downvotes,因为我认为这是一个愚蠢的问题,但在这里:

我正在尝试将数据插入TABLE TYPE变量.我有一个预先存在的TABLE TYPE,定义为:

create or replace type m_code_object
 is object (m_code varchar2(25 char));

create or replace type m_code_tabletype
 is table of m_code_object;
Run Code Online (Sandbox Code Playgroud)

以及我想基于此定义并将数据插入的表格如下:

declare
    vtable m_code_tabletype;
begin
    insert into vtable values ('a');
    insert into vtable values ('b');
end;
Run Code Online (Sandbox Code Playgroud)

现在,当在SQL Developer中运行时,我得到PL/SQL: ORA-00942: table or view does not exist两行.

我的理解是,这是一个类型的表变量,m_code_tabletype在尝试向其中插入数据之前,它足以在块中声明它.

任何人都可以解释一下我做错了什么或者我的理解中缺少了什么?

谢谢

ati*_*tik 9

这是填充表类型对象的方式:

declare
    vtable m_code_tabletype := m_code_tabletype();
begin
    vtable.extend;
    vtable(vtable.count) := m_code_object('a');
    vtable.extend;
    vtable(vtable.count) := m_code_object('b');
end;
Run Code Online (Sandbox Code Playgroud)


Hus*_*vik 1

DECLARE
    c_varray SYS.ODCIVARCHAR2LIST;
BEGIN
    c_varray := SYS.ODCIVARCHAR2LIST();
    c_varray.EXTEND(2);
    c_varray(1) := '1';
    c_varray(2) := '2';
END;
Run Code Online (Sandbox Code Playgroud)

或者

DECLARE
    c_varray SYS.ODCIVARCHAR2LIST;
BEGIN
    SELECT LEVEL BULK COLLECT INTO c_varray FROM DUAL CONNECT BY LEVEL <= 10;
END;
Run Code Online (Sandbox Code Playgroud)