刚刚学创建包,写了个超简单的怎么就出错了不知怎么回事找不出问题所在
分割线后面是show error显示的错误SQL> create or replace package body my_package is
2 procedure my_procedure(name varchar2,num number);
3 function my_function(name varchar2) return number;
4 end;
5 /
Warning: Package body created with compilation errors -------------------------------------------------------
SQL> show error;
Errors for PACKAGE BODY SCOTT.MY_PACKAGE:
LINE/COL ERROR
-------- -----------------------------------------------------
1/14 PLS-00905: 对象 SCOTT.MY_PACKAGE 无效
1/14 PLS-00304: 如果没有说明,则无法编译 'MY_PACKAGE' 主体
0/0 PL/SQL: Compilation unit analysis terminated
分割线后面是show error显示的错误SQL> create or replace package body my_package is
2 procedure my_procedure(name varchar2,num number);
3 function my_function(name varchar2) return number;
4 end;
5 /
Warning: Package body created with compilation errors -------------------------------------------------------
SQL> show error;
Errors for PACKAGE BODY SCOTT.MY_PACKAGE:
LINE/COL ERROR
-------- -----------------------------------------------------
1/14 PLS-00905: 对象 SCOTT.MY_PACKAGE 无效
1/14 PLS-00304: 如果没有说明,则无法编译 'MY_PACKAGE' 主体
0/0 PL/SQL: Compilation unit analysis terminated
--package
CREATE OR REPLACE PACKAGE PCK_DOMAIN
IS
FUNCTION GET_DEPTNO(IN_DNAME VARCHAR2) RETURN VARCHAR2;
PROCEDURE UPDATE_HIREDATE(IN_NAME IN VARCHAR2) ;
END PCK_DOMAIN ;--package body
CREATE OR REPLACE PACKAGE BODY PCK_DOMAIN IS
--存储过程实现
PROCEDURE UPDATE_HIREDATE(IN_NAME IN VARCHAR2)
IS
IN_DEPNO VARCHAR2(10);
BEGIN
IN_DEPNO:=GET_DEPTNO(IN_NAME);
UPDATE EMP SET HIREDATE=TRUNC(SYSDATE)-7 WHERE DEPTNO = IN_DEPNO ;
COMMIT;
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.put_line('PROC->ERROR CODE : '||sqlcode||'ERROR MSG: '||UPPER(sqlerrm));
ROLLBACK;
END UPDATE_HIREDATE ;
END PCK_DOMAIN;
CREATE OR REPLACE PACKAGE pk1 is
............
end pk1;然后包体实现
CREATE OR REPLACE PACKAGE BODY pk1 is
............
end pk1;光写包体是无法编译的!!
对,包头是不包含关键字body的,只是包体的实现部分才用关键字body进行区别。
这只是一个逻辑关系。