source

TAB에 데이터를 삽입하는 방법LE 유형 변수

factcode 2023. 8. 2. 09:26
반응형

TAB에 데이터를 삽입하는 방법LE 유형 변수

저는 이것이 어리석은 질문이라고 생각하기 때문에 많은 반대표를 기대하고 있지만, 다음과 같습니다.

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;

이를 바탕으로 정의하고 데이터를 삽입하고자 하는 표는 다음과 같습니다.

declare
    vtable m_code_tabletype;
begin
    insert into vtable values ('a');
    insert into vtable values ('b');
end;

SQL Developer에서 이 기능을 실행하면 다음과 같은 이점을 얻을 수 있습니다.PL/SQL: ORA-00942: table or view does not exist두 줄 모두에 대해

제가 이해한 바로는 이것은 유형의 테이블 변수입니다.m_code_tabletype데이터를 삽입하기 전에 블록에 선언하면 충분합니다.

제가 무엇을 잘못하고 있는지 또는 제가 이해할 수 없는 부분이 무엇인지 설명해주실 수 있나요?

감사해요.

테이블 유형의 개체를 채우는 방법은 다음과 같습니다.

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;
DECLARE
    c_varray SYS.ODCIVARCHAR2LIST;
BEGIN
    c_varray := SYS.ODCIVARCHAR2LIST();
    c_varray.EXTEND(2);
    c_varray(1) := '1';
    c_varray(2) := '2';
END;

또는

DECLARE
    c_varray SYS.ODCIVARCHAR2LIST;
BEGIN
    SELECT LEVEL BULK COLLECT INTO c_varray FROM DUAL CONNECT BY LEVEL <= 10;
END;

테이블 유형에 대한 자세한 설명이 여기에 있습니다.

사용해 보십시오.

 declare
    vtable m_code_tabletype;
    vrow m_code_object;     
begin
    vrow := m_code_object('a');
    vtable := m_code_tabletype(vrow);
    abs_test(vtable);
end;

테이블 유형을 저장 프로시저에 전달하려면 다음을 수행합니다.

Create or replace procedure abs_test(mct IN m_code_tabletype)
AS
BEGIN
    FOR i in 1..mct.count
    LOOP
        dbms_output.put_line('hello' || to_char(mct.count));
    END LOOP;
END; 

언급URL : https://stackoverflow.com/questions/32205693/how-to-insert-data-into-table-type-variable

반응형