2011-07-30 5 views
5

Je suis novice dans l'utilisation de PL/SQL et j'essaie de créer une nouvelle procédure stockée dans un package existant. Je me rends compte qu'il y a "CREATE OR REPLACE PACKAGE BODY", mais cela signifie-t-il que le corps entier sera supprimé une fois que j'aurai ajouté mon nouveau proc, ou le fera-t-il simplement? (Mon nom de proc n'a pas le même nom que les procs actuels).Comment créer une nouvelle procédure stockée dans un package existant

Merci!

Répondre

9

Malheureusement, pour ajouter une nouvelle procudure ou fonction à un package existant, vous devez modifier le package d'origine et le soumettre à nouveau en tant que créer ou remplacer.

Il n'y a actuellement aucune méthode pour ajouter ou retirer d'un paquet sans modifier et soumettre de nouveau le code de paquet entier.

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; 

Je vous d'abord définir la fonction de son type et d'écrire plus tard complet du corps d'une ou plusieurs fonctions qui doit être inclus dans un package. Les choses devraient bien fonctionner.

Questions connexes