Package sur oracle express 10g

slimy Messages postés 24 Statut Membre -  
slimy Messages postés 24 Statut Membre -
Bonjour,
j'exécute un package sur oracle express 10g et il me met l'erreur suivante:

ERREUR à la ligne 6 : PLS-00103: Symbole "CREATE" rencontré

Je ne vois pas le problème.
le code est le suivant:

CREATE OR REPLACE PACKAGE MAJ_POSTE is
procedure P_INS_POSTE(NOM_POST VARCHAR2);
procedure P_DEL_POSTE (CODE_POST NUMBER);
END MAJ_POSTE;

CREATE OR REPLACE PACKAGE BODY MAJ_POSTE is
procedure P_INS_POSTE(NOM_POST VARCHAR2)is
CODE_POST NUMBER;
begin

if ( NOM_POST is not null )then
LOCK TABLE POSTE IN ROW EXCLUSIVE MODE NOWAIT;
insert into POSTE values(INC_CODE_POSTE.nextval,initcap(NOM_POST));
DBMS_OUTPUT.PUT_LINE( To_char( SQL%ROWCOUNT ) || ' enregistrement(s) inseré(s)') ;
COMMIT;
end if;
select INC_CODE_POSTE.currval into CODE_POST from DUAl;
if (NOM_POST is null)then
DBMS_OUTPUT.PUT_LINE('Entrer le nom du poste ayant pour code '||':'||CODE_POST||'.');
end if;

end;

procedure P_DEL_POSTE (CODE_POST NUMBER)is
begin
LOCK TABLE POSTE IN ROW EXCLUSIVE MODE NOWAIT;
DELETE from POSTE where CODE_POSTE=CODE_POST;
DBMS_OUTPUT.PUT_LINE( To_char( SQL%ROWCOUNT ) || ' enregistrement(s) supprimé(s)');
COMMIT;
end;

END MAJ_POSTE;
Configuration: Windows 7
Safari 531.3

13 réponses

  1. M2PG Messages postés 537 Statut Membre 115
     
    Espace entre la parenthese et le is peut etre !
    1
  2. fiu
     
    on s'est mal compris

    remplace
    END MAJ_POSTE;

    CREATE OR REPLACE PACKAGE BODY MAJ_POSTE is

    par
    END MAJ_POSTE;
    /
    CREATE OR REPLACE PACKAGE BODY MAJ_POSTE is


    puis
    end;

    END MAJ_POSTE;

    par
    end;
    /
    END MAJ_POSTE;
    1
    1. fiu
       
      Je m'a un peu trompé dans la fin

      j'aurais du écrire
      end;
      end MAJ_POSTE;
      /
      0
  3. slimy Messages postés 24 Statut Membre 1
     
    je l'ai fait mais ça ne marche toujours pas....

    Après ajout des /
    ERREUR à la ligne 5 : PLS-00103: Symbole "/" rencontré
    1
  4. fiu
     
    Salut,

    une réponse vite faite car j'ai pas trop de temps, là.
    * avant d'envoyer tes packages et packages body, envoie donc un joli set echo on pour voir tes lignes de code numérotées et digérées l'une après l'autre par SQL*Plus. Si c'est trop long, envoie d'abord un spool nom_fichier.log pour stocker dans un fichier tout ce qui va s'afficher à l'écran (spool off pour l'arrêter). Ainsi tu sauras précisément à quelle ligne ton show errors fait référence.
    * une fois que tu auras ajouté un point-virgule derrière le select into nbre1 et remplacé tes choix=... par choix := ... l'erreur en 11/2 tu auras peut-être un diagnostic différent.
    * les "erreurs" affichées via put_line devraient faire l'objet d'exceptions. Il n'est pas dit que ton système n'évoluera pas et que donc, le logiciel qui utilisera tes procédures soit capable de récupérer les sorties par put_line.
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fiu
     
    ajoute un slash '/' après la création de ton package et un autre après la création du package body
    0
  7. slimy Messages postés 24 Statut Membre 1
     
    merci,
    mais j'ai mis l'espace entre la parenthèse et le is cela ne marche pas la mm erreur encore..
    0
  8. slimy Messages postés 24 Statut Membre 1
     
    ça ne marche toujours pas(dans oracle pas de slash)
    il met comme erreur:
    symbole"/" rencontré
    c'est sur sql que cela passe...
    0
  9. fiu
     
    je me suis replongé dans ma production de paquetages de l'époque (ça commence à dater)

    les différences notables entre ce que j'avais et ce tu fais sont
    1. j'utilisais AS et non pas IS à la suite de package ou package body (par contre, les types et les proc étaient bien déclarés avec IS)
    2. j'avais 1 ligne vide entre la fin du package ou du package body et mon slash (mais je crois me rappeler que c'était à cause d'un bug de SQL*Plus)

    pour le reste, j'ai pas trop d'idées...
    0
  10. fiu
     
    re

    je viens de tester dans une base 10g (10.2.0.1.0) avec SQL*Plus (Démarrer -> programmes -> Oracle xxx -> Exécuter la ligne de commande SQL)
    - tes instructions create or replace sont dans un fichier slimy-pkg.sql
    - j'ai créé une table POSTE et une séquence INC_CODE_POSTE

    lorsque j'exécute le script avec SQL> @slimy-pkg, ça s'arrête sur la ligne 33 et ça attend que je tape quelque chose. si j'arrête la saisie (avec un .) et que je lance l'exécution de ce qui a été chargé, j'ai effectivement une erreur PLS-00103 en 6/1

    mais si je rajoute un slash après chaque ligne END MAJ_POSTE; et que j'exécute le script, les deux instructions sont bien exécutées, le package et le package body sont créés sans erreur !
    0
  11. slimy Messages postés 24 Statut Membre 1
     
    ok dans mon cas je suis sur oracle express 10g et je vois pas le probléme
    Sur sql*plus ça marche mais sur oracle j'exécute mais ça continu à me mettre : symbole "create" ranconté
    j'ai déjà passé tout le code en revue.............
    0
  12. fiu
     
    euh...
    la console d'oracle c'est SQL*Plus
    il y a eu d'autres tentatives pour faire plus moderne, plus interactif, plus agréable (genre éditeur sympa) mais rien n'est jamais arrivé à la cheville de SQL*Plus.
    C'est quoi l'oracle dont tu parles, celui avec lequel ton package est refusé ?
    0
  13. slimy Messages postés 24 Statut Membre 1
     
    oui c'est une version d'essai d'oracle que l'on appelle oracle express. Mais tu as raison sql*plus est encore meilleur..bref maintenant c'est là que je bosse
    mais il me mentionne encore des erreurs que je corrige depuis mais rien affaire les même erreurs apparaissent. I need help please
    le code:

    CREATE OR REPLACE PACKAGE MAJ_RESERVATION is
    procedure P_INS_RESERVATION(MAT NUMBER, CODE_SOIRE NUMBER,ID_VILL NUMBER,MONTANT_CHEK NUMBER,VALID NUMBER,choix number);
    procedure P_DEL_RESERVATION(CODE_RESER NUMBER);
    end MAJ_RESERVATION;
    /
    CREATE OR REPLACE PACKAGE BODY MAJ_RESERVATION is
    procedure P_INS_RESERVATION(MAT NUMBER, CODE_SOIRE NUMBER,ID_VILL NUMBER, MONTANT_CHEK NUMBER,VALID NUMBER, choix number)
    is
    paye number;
    nbre number;
    nbre1 number;
    nbr number;

    begin
    select NOMBRE_PERS into nbre from FAMILLE F, SALARIES S where F.CODE_FAMILLE=S.CODE_FAMILLE;
    select COUNT(*) into nbre1 from AVOIR A, ENFANT E, SALARIE S
    Where A.NUM_ENFANT=E.NUM_ENFANT and S.MATRICULE=A.MATRICULE and AGE_ENFANT<15

    paye:= nbre1*10+(nbre-nbre1)*15;
    if( MAT is not null and CODE_SOIRE is not null and ID_VILL is not null and MONTANT_CHEK is not null and
    VALID is not null and choix is not null ) then
    if ( paye=MONTANT_CHEK and VALID=1) then
    select count(*)into nbr from reservation where CODE_SOIREE=CODE_SOIRE and MATRICULE=MAT;

    if (nbr=0) then

    insert into RESERVATION values (INC_CODE_RESER.nextval,MAT,CODE_SOIRE ,I_VILL,
    to_date(sysdate,'DD/MM/YYYY'),paye, VADID, choix );
    end if;
    if (nbr=1) then
    choix=choix+1;
    insert into RESERVATION values (INC_CODE_RESER.nextval,MAT,CODE_SOIRE ,I_VILL,
    to_date(sysdate,'DD/MM/YYYY'),paye, VADID, choix );
    end if;
    if (nbr=2) then
    choix=choix+1;
    insert into RESERVATION values (INC_CODE_RESER.nextval,MAT,CODE_SOIRE ,I_VILL,
    to_date(sysdate,'DD/MM/YYYY'),paye, VADID, choix );
    end if;
    if (nbr=3) then
    DBMS_OUTPUT.PUT_LINE('vos choix de reservation epuisés');
    end if;

    end if;
    end if;

    if ( paye<> MONTANT_CHEK ) then
    DBMS_OUTPUT.PUT_LINE('Montant inférieur à celui demandé pour la reservation'||':'||CODE_RESER||'du salarié'||MAT||'.');
    end if;

    end P_INS_RESERVATION;

    procedure P_DEL_RESERVATION(CODE_RESER NUMBER)is
    begin
    DELETE FROM RESERVATION WHERE CODE_RESERVATION=CODE_RESER;
    COMMIT;
    DBMS_OUTPUT.PUT_LINE( To_char( SQL%ROWCOUNT ) || ' enregistrement(s) supprimé(s)') ;
    end P_DEL_RESERVATION;

    end MAJ_RESERVATION;
    /
    show errors;

    depuis ça me met les même erreurs bien que que je change à chaque fois...
    Package créé.

    Avertissement : Corps de package créé avec erreurs de compilation.

    Erreurs pour PACKAGE BODY MAJ_RESERVATION :

    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    11/2 PL/SQL: SQL Statement ignored
    14/2 PL/SQL: ORA-00933: la commande SQL ne se termine pas correctement
    26/24 PLS-00103: Symbole "=" rencontré à la place d'un des symboles
    suivants :
    := . ( @ % ;

    27/19 PLS-00103: Symbole "INSERT" rencontré
    29/20 PLS-00103: Symbole "END" rencontré
    0
  14. slimy Messages postés 24 Statut Membre 1
     
    oui t'as raison
    merci mais j'ai résolu le probléme(grâce à sql*plus)
    merci pour tout fliu..
    0