ORA-06530: ссылка на неинициализированный композит - PullRequest
2 голосов
/ 03 сентября 2010

При выполнении пакета появляется сообщение об ошибке:

ошибка в emp_test ORA-06530: ссылка на неинициализированный композит

Можете ли вы объяснить, какможно инициализировать тип объекта в пакете?

CREATE OR REPLACE TYPE emp_obj AS OBJECT
(
  emp_no   number,
  salary   number,
  job   varchar2(20)
);

CREATE OR REPLACE PACKAGE BODY emp_dummy_pk IS
  PROCEDURE emp_test IS
    CURSOR emp_cur IS
      SELECT empno, sal, job FROM emp;

    l_emp_no  emp_obj;
  BEGIN
    FOR emp_rec IN emp_cur LOOP
      l_emp_no.emp_no := emp_rec.empno;
      l_emp_no.salary := emp_rec.sal;
      l_emp_no.job := emp_rec.job;

      BEGIN
        emp_pk.emp_chk( p_emp_no => l_emp_no );
      EXCEPTION
        WHEN OTHERS THEN
          dbms_output.put_line( 'error in the emp_pk.emp_no ' || SQLERRM );
      END;
    END LOOP;
  EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line( 'error in the emp_test ' || SQLERRM );
  END;
END;

BEGIN
  emp_dummy_pk.emp_test;
END;

1 Ответ

6 голосов
/ 03 сентября 2010

Вы можете инициализировать его с помощью конструктора:

l_emp_no := NEW emp_obj( emp_rec.empno, emp_rec.sal, emp_rec.job );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...