2011-07-30 18 views
5

私はPL/SQLを初めて使用しており、既存のパッケージに新しいストアドプロシージャを作成しようとしています。私は「パッケージの作成または置き換え」があることを認識していますが、これは、新しいprocを追加するとボディ全体が削除されることを意味しますか、それを追加するだけですか? (私のproc名は現在のprocsと同じ名前ではありません)。既存のパッケージに新しいストアドプロシージャを作成する方法

ありがとうございました!

答えて

9

残念ながら、新しいパッケージまたは機能を既存のパッケージに追加するには、元のパッケージを変更して、作成または置き換えとして再送信する必要があります。

パッケージコード全体を変更したり再送信したりせずにパッケージに追加または削除する方法は現在ありません。

http://forums.oracle.com/forums/thread.jspa?threadID=380898

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; 

私が最初にそのタイプの関数を定義し、後でパッケージに含まれるべき一つ以上の機能の完全なボディを書きます。物事はうまくいくはずです。

関連する問題