varray 변수를 사용하여 삽입 쿼리를 실행하는 데 문제가 있습니다.

StackOverflow https://stackoverflow.com/questions/116938

  •  02-07-2019
  •  | 
  •  

문제

저는 Oracle 10g 기업에서 SQL*Plus 9.2를 사용하고 있습니다.명령 프롬프트를 통해 전달하는 매개변수를 사용하여 기본 삽입을 수행하는 일부 스크립트를 만들었습니다.루프에서 여러 개의 삽입을 실행할 수 있어야 한다는 것이 논리적인 것처럼 보였습니다.그래서 다음을 시도했습니다.

--begin

DECLARE

TYPE va_orgs IS TABLE OF nbr.lien_item.lien_item_name%type;

org va_orgs :=  va_orgs('RTA','RTB','RTE','RTI','RTM','RTT');

BEGIN

FOR i in org.FIRST .. org.LAST

LOOP

INSERT INTO nbr.lien_item (lien_item_sid, excel_row, include_in_calcs, indent, header_level, sort_order, unit, lien_item_status, lien_item_name) VALUES (nbr.lien_item_seq.nextval, 0, 'Y', 1, 0, 1, 'FTE', 'A', 'org(i)');

COMMIT;

END LOOP;

END;

/

--end

스크립트를 실행하면 PL/SQL이 성공적으로 완료되었다는 메시지가 나타납니다.디버깅하고 사용해 보았습니다. dbms_output 값을 표시하기 위해 org(i).모든 것이 괜찮아 보입니다.그러나 행은 데이터베이스에 입력되지 않습니다.선택을 수행하자마자 새 행이 없습니다.루핑과 삽입에 대한 몇 가지 요령이 있습니까?

(나도 시도해봤어 IS VARRAY(6) OF 대신에 IS TABLE OF.결과가 동일하지 않음)

도움이 되었습니까?

해결책

삽입 문에는 작은따옴표로 묶인 org(i)가 있습니다.그렇게 해서는 안 됩니다. 아마도 org(i)라는 단어를 테이블에 값으로 삽입하고 있을 것입니다.따라서 삽입 문은 다음과 같아야 합니다.

INSERT INTO nbr.lien_item (lien_item_sid, excel_row, include_in_calcs, indent, header_level, sort_order, unit, lien_item_status, lien_item_name) VALUES (nbr.lien_item_seq.nextval, 0, 'Y', 1, 0, 1, 'FTE', 'A', org(i));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top