ORA-06530: 对未初始化复合的引用
当我执行包时,我收到一条错误消息:
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;
When I am executing the package I get an error message:
error in the emp_test ORA-06530: Reference to uninitialized composite
Can u explain how I can initialized an object type in a package?
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;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用构造函数初始化它:
You can initialize it using the constructor: