Erreur lors de l'Exécution de Package
Structure De La Table:
Name Null Type
---------- ---- ------------
DPT_NO NUMBER
SALARY NUMBER(10)
PERIOD VARCHAR2(10)
START_DATE DATE
END_DATE DATE
Package:
CREATE OR REPLACE package body salary_sal AS
PROCEDURE find_sal(c_dpt_no salary.dpt_no%TYPE) IS
c_sal salary.salary%TYPE;
BEGIN
SELECT salary INTO c_sal
FROM salary
WHERE c_dpt_no= 108;
dbms_output.put_line('Salary: '|| c_sal);
END find_sal;
END salary_sal;
lors de l'exécution ci-dessus, je suis d'erreur suivant
Error: PL/SQL: Compilation unit analysis terminated
Error(1,14): PLS-00201: identifier 'SALARY_SAL' must be declared
Error(1,14): PLS-00304: cannot compile body of 'SALARY_SAL' without its specification.
Vous devez vous connecter pour publier un commentaire.
Vous êtes absent de la déclaration de l'emballage. L'idée est de séparer la déclaration de l'ensemble ("la tête", si vous voulez), alors que d'autres packages/procédures/fonctions permet de compiler à l'encontre de l'organisme (l'implémentation).
Dans votre cas, vous auriez besoin de quelque chose comme:
Maintenant, une fois que le colis est déclaré, vous pouvez créer de son corps:
Le paquet a besoin d'un cahier des charges (c'est à dire une interface séparée définition) que le message d'erreur dit. Vous devez ajouter quelque chose comme avant la définition de la corps de package (c'est à dire sa mise en œuvre):
CREATE OR REPLACE package body salary_sal ...
dans votre code. Elle est séparée du corps, mais qu'il requiert.DBMS_OUTPUT
paquet que vous utilisez. Sa mise en œuvre peut changer entre les versions d'Oracle, mais vous n'avez pas besoin de se soucier de cela, il suffit d'appuyer sur le cahier des charges (c'est à dire l'interface) de ce module.Vous ont besoin pour créer un package de spécifications, puis seulement vous pouvez créer un corps de package.
Vous avez besoin pour exécuter le package je.e vous exécuter les procédures stockées,fonctions, etc dans le package.