创建包
包头:
CREATE OR REPLACE PACKAGE test_pkg IS
PROCEDURE update_sal(e_name VARCHAR2,newsal NUMBER); -- 定义一个函数
FUNCTION ann_income(e_name VARCHAR2) RETURN NUMBER; -- 定义一个存储过程
END;
包体:
CREATE OR REPLACE PACKAGE BODY test_pkg IS
PROCEDURE update_sal(e_name VARCHAR2,newsal NUMBER)
IS
BEGIN
UPDATE emp1 SET sal=newsal WHERE ename=e_name;
END;
FUNCTION ann_income(e_name VARCHAR2)
RETURN NUMBER IS
annsal NUMBER;
BEGIN
SELECT sal*12 NVL(comm,0) INTO annsal FROM emp1
WHERE ename=e_name;
RETURN annsal;
END;
END;
注意:文中黄色区域,包头和包体的命名要一模一样
3、调用包
内部调用:即在指的包里调用,直接调,不用写:包名.;
外部调用:包名.函数,或者包名.存过。