oracle築包ORA-06550: line 1, column 7: PLS-00905: object SCOTT.SP_PACKAGE1 is inva

tags:    時間:2013-12-24 18:04:59
oracle建包ORA-06550: line 1, column 7: PLS-00905: object SCOTT.SP_PACKAGE1 is inva


--創建一個包(SP_PACKAGE1):包括包頭和包體,名字均為包名
--創建一個包頭:SP_PACKAGE1
--該包體申明有一個存儲過程:UPDATESALBYNO(根據empno修改該僱員的sal)
--該包體申明有一個函數:ANNUA_INCOME(根據ename查詢該僱員的年薪)
CREATE OR REPLACE PACKAGE SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER(4),EMPNUBER NUMBER(4));
FUNCTION ANNUA_INCOME(NAME VARCHAR2) RETURN NUMBER(7,2);
END;

--創建包體,即定義好在包頭中申明的存儲過程以及函數
CREATE OR REPLACE PACKAGE BODY SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER(4),EMPNUBER NUMBER(4)) IS
BEGIN
UPDATE EMP SET SAL = NEWSALARY WHERE EMPNO = EMPNUBER;
END;
FUNCTION ANNUA_INCOME(NAME VARCHAR2)
RETURN NUMBER(7,2) IS ANNUA_SAL NUMBER(7,2);
BEGIN
SELECT SAL*12+NVL(COMM,0) INTO ANNUA_SAL FROM EMP WHERE ENAME = NAME;
RETURN ANNUA_SAL;
END;
END;

--調用包中的存儲過程
EXEC SP_PACKAGE1.UPDATESALBYNO(120,886);




怎麼會報錯呢?!感覺是對的啊,

PACKAGE SP_PACKAGE1 compiled
Errors: check compiler log
PACKAGE BODY SP_PACKAGE1 compiled
Errors: check compiler log
Error starting at line : 83 in command -
EXEC SP_PACKAGE1.UPDATESALBYNO(120,886)
Error report -
ORA-06550: line 1, column 7:
PLS-00905: object SCOTT.SP_PACKAGE1 is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

------解決方案--------------------
兄弟你看下這個對不對
--創建一個包(SP_PACKAGE1):包括包頭和包體,名字均為包名
--創建一個包頭:SP_PACKAGE1
--該包體申明有一個存儲過程:UPDATESALBYNO(根據empno修改該僱員的sal)
--該包體申明有一個函數:ANNUA_INCOME(根據ename查詢該僱員的年薪)
CREATE OR REPLACE PACKAGE SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER,EMPNUBER NUMBER);
FUNCTION ANNUA_INCOME(NAME VARCHAR2) RETURN NUMBER;
END;

--創建包體,即定義好在包頭中申明的存儲過程以及函數
CREATE OR REPLACE PACKAGE BODY SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER,EMPNUBER NUMBER)
IS
BEGIN
UPDATE EMP SET SAL = NEWSALARY WHERE EMPNO = EMPNUBER;
END;
FUNCTION ANNUA_INCOME(NAME VARCHAR2)
RETURN NUMBER IS ANNUA_SAL NUMBER;
BEGIN
SELECT SAL*12+NVL(COMM,0) INTO ANNUA_SAL FROM EMP WHERE ENAME = NAME;
RETURN ANNUA_SAL;
END;
END;

--調用包中的存儲過程
EXEC SP_PACKAGE1.UPDATESALBYNO(1020,886);

------解決方案--------------------
引用:


--創建一個包(SP_PACKAGE1):包括包頭和包體,名字均為包名
--創建一個包頭:SP_PACKAGE1
--該包體申明有一個存儲過程:UPDATESALBYNO(根據empno修改該僱員的sal)
--該包體申明有一個函數:ANNUA_INCOME(根據ename查詢該僱員的年薪)
CREATE OR REPLACE PACKAGE SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER(4),EMPNUBER NUMBER(4));
FUNCTION ANNUA_INCOME(NAME VARCHAR2) RETURN NUMBER(7,2);
END;

--創建包體,即定義好在包頭中申明的存儲過程以及函數
CREATE OR REPLACE PACKAGE BODY SP_PACKAGE1 IS
PROCEDURE UPDATESALBYNO(NEWSALARY NUMBER(4),EMPNUBER NUMBER(4)) IS
BEGIN
UPDATE EMP SET SAL = NEWSALARY WHERE EMPNO = EMPNUBER;
END;
FUNCTION ANNUA_INCOME(NAME VARCHAR2)
RETURN NUMBER(7,2) IS ANNUA_SAL NUMBER(7,2);
BEGIN
SELECT SAL*12+NVL(COMM,0) INTO ANNUA_SAL FROM EMP WHERE ENAME = NAME;
RETURN ANNUA_SAL;
END;
END;

--調用包中的存儲過程
EXEC SP_PACKAGE1.UPDATESALBYNO(120,886);




怎麼會報錯呢?!感覺是對的啊,

PACKAGE SP_PACKAGE1 compiled
Errors: check compiler log
PACKAGE BODY SP_PACKAGE1 compiled
Errors: check compiler log
Error starting at line : 83 in command -
EXEC SP_PACKAGE1.UPDATESALBYNO(120,886)
Error report -
ORA-06550: line 1, column 7:
PLS-00905: object SCOTT.SP_PACKAGE1 is invalid

推薦閱讀文章

Bookmark the permalink ,來源:互聯網