programing

ORA-00947 유형을 전역으로 선언하는 동안 값이 충분하지 않음

lastcode 2023. 7. 1. 08:46
반응형

ORA-00947 유형을 전역으로 선언하는 동안 값이 충분하지 않음

 create table foo(
   id number,
   status varchar2(10)
 );

테이블이 생성되었습니다.

insert into foo values( 1, 'open' );
insert into foo values( 2, 'close' );
insert into foo values( 3, 'open' );
insert into foo values( 4, 'open' );
insert into foo values( 5, 'close' );

create type foo_obj is object (
      id number,
      status varchar2(10)
    );
   /

 create type foo_nt
     as table of foo_obj;
  /

 create or replace package test_bulk
 is 

 procedure temp;

 end;
 /

 create or replace package body test_bulk
 is 

 procedure  temp
   is 
   v_nt  foo_nt;
   begin
     select id ,status 
     bulk collect into v_nt
     from foo;

   end temp;

   end test_bulk;

이는 매우 이상한 상황으로, 유형 객체와 해당 유형의 중첩 테이블을 전역적으로 생성하고 중첩 테이블 유형의 변수를 생성하여 해당 변수로 대량 수집합니다.

ORA-00947: 값 부족 오류

그러나 레코드 유형과 해당 레코드 유형의 중첩된 테이블을 선언하고 패키지 내부에 중첩된 테이블의 변수를 선언하면 위의 대량 수집이 작동하며 오류가 발생하지 않습니다.

이것 좀 도와주실 분 있나요?

개체 테이블에 값을 넣을 수는 없습니다. 값을 적절한 유형의 개체로 변환한 다음 개체를 삽입해야 합니다.해라

procedure temp is
  v_nt  foo_nt;
begin
  select FOO_OBJ(id ,status)
    bulk collect into v_nt
    from foo;
end temp;

동물 실험 안 함 - 당신이 첫 번째가 될 것입니다!

공유하고 즐기세요.

언급URL : https://stackoverflow.com/questions/10213489/ora-00947-not-enough-values-while-declaring-type-globally

반응형