반응형
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
반응형
'source' 카테고리의 다른 글
봄 3의 모든 컨트롤러 모델에 속성 추가 (0) | 2023.08.02 |
---|---|
__init_.py에 정의된 클래스를 가져오는 방법 (0) | 2023.08.02 |
Oracle ojdbc8 12.2.0.1 메이븐에서 금지됨 (0) | 2023.08.02 |
MySQL - CASE vs IF 문 vs IF 함수 (0) | 2023.08.02 |
CSS에서 글꼴 놀라운 아이콘 사용 (0) | 2023.08.02 |