私はPL/SQLを初めて使用しており、既存のパッケージに新しいストアドプロシージャを作成しようとしています。私は「パッケージの作成または置き換え」があることを認識していますが、これは、新しいprocを追加するとボディ全体が削除されることを意味しますか、それを追加するだけですか? (私のproc名は現在のprocsと同じ名前ではありません)。既存のパッケージに新しいストアドプロシージャを作成する方法
ありがとうございました!
私はPL/SQLを初めて使用しており、既存のパッケージに新しいストアドプロシージャを作成しようとしています。私は「パッケージの作成または置き換え」があることを認識していますが、これは、新しいprocを追加するとボディ全体が削除されることを意味しますか、それを追加するだけですか? (私のproc名は現在のprocsと同じ名前ではありません)。既存のパッケージに新しいストアドプロシージャを作成する方法
ありがとうございました!
残念ながら、新しいパッケージまたは機能を既存のパッケージに追加するには、元のパッケージを変更して、作成または置き換えとして再送信する必要があります。
パッケージコード全体を変更したり再送信したりせずにパッケージに追加または削除する方法は現在ありません。
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;
私が最初にそのタイプの関数を定義し、後でパッケージに含まれるべき一つ以上の機能の完全なボディを書きます。物事はうまくいくはずです。