兄弟你看下这个对不对
--创建一个包(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);

解决方案 »

  1.   


    传入参数不用指定长度吧,还有就是对不属于自己的表进行操作时最好是带上用户名前缀,如:SCOTT.EMP
      

  2.   

    如果上面的脚本可以运行,那就是定义NUMBER类型的数据时,不需要设置它的长度。
      

  3.   


    传入参数不用指定长度吧,还有就是对不属于自己的表进行操作时最好是带上用户名前缀,如:SCOTT.EMP
    恩呢,是的,是的,还是初次接触,懂得不多,还请多多关照!