我是使用PL / SQL的新手,我正在尝试在现有包中创建一个新的存储过程。我意识到有“创建或替换包装身体”,但这是否意味着一旦我添加新的proc,整个身体将被删除,或者它只是附加它? (我的proc名称与当前任何proc的名称不同。)
谢谢!
答案 0 :(得分:13)
不幸的是,要向现有包添加新的procudure或函数,您必须修改原始包并重新提交为创建或替换。
目前没有方法可以在不修改和重新提交整个包代码的情况下添加或删除包。
答案 1 :(得分:1)
CREATE OR REPLACE PACKAGE emp_actions AS -- spec
TYPE EmpRecTyp IS RECORD (emp_id INT, salary REAL);
CURSOR desc_salary RETURN EmpRecTyp;
PROCEDURE hire_employee (
ename VARCHAR2,
job VARCHAR2,
mgr NUMBER,
sal NUMBER,
comm NUMBER,
deptno NUMBER);
PROCEDURE fire_employee (emp_id NUMBER);
END emp_actions;
CREATE OR REPLACE PACKAGE BODY emp_actions AS -- body
CURSOR desc_salary RETURN EmpRecTyp IS
SELECT empno, sal FROM emp ORDER BY sal DESC;
PROCEDURE hire_employee (
ename VARCHAR2,
job VARCHAR2,
mgr NUMBER,
sal NUMBER,
comm NUMBER,
deptno NUMBER) IS
BEGIN
INSERT INTO emp VALUES (empno_seq.NEXTVAL, ename, job,
mgr, SYSDATE, sal, comm, deptno);
END hire_employee;
PROCEDURE fire_employee (emp_id NUMBER) IS
BEGIN
DELETE FROM emp WHERE empno = emp_id;
END fire_employee;
END emp_actions;
我首先使用其类型定义函数,然后编写要包含在包中的一个或多个函数的完整主体。事情应该很好。