Package sur oracle express 10g

Fermé
slimy Messages postés 20 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 17 février 2010 - 13 janv. 2010 à 01:10
slimy Messages postés 20 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 17 février 2010 - 13 janv. 2010 à 18:40
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;
A voir également:

13 réponses

M2PG Messages postés 512 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 30 décembre 2013 115
13 janv. 2010 à 01:23
Espace entre la parenthese et le is peut etre !
1
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
Je m'a un peu trompé dans la fin

j'aurais du écrire
end;
end MAJ_POSTE;
/
0
slimy Messages postés 20 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 17 février 2010 1
13 janv. 2010 à 02:05
je l'ai fait mais ça ne marche toujours pas....

Après ajout des /
ERREUR à la ligne 5 : PLS-00103: Symbole "/" rencontré
1
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ajoute un slash '/' après la création de ton package et un autre après la création du package body
0
slimy Messages postés 20 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 17 février 2010 1
13 janv. 2010 à 01:30
merci,
mais j'ai mis l'espace entre la parenthèse et le is cela ne marche pas la mm erreur encore..
0
slimy Messages postés 20 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 17 février 2010 1
13 janv. 2010 à 01:33
ça ne marche toujours pas(dans oracle pas de slash)
il met comme erreur:
symbole"/" rencontré
c'est sur sql que cela passe...
0
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
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
slimy Messages postés 20 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 17 février 2010 1
13 janv. 2010 à 10:19
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
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
slimy Messages postés 20 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 17 février 2010 1
13 janv. 2010 à 16:18
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
slimy Messages postés 20 Date d'inscription dimanche 22 novembre 2009 Statut Membre Dernière intervention 17 février 2010 1
13 janv. 2010 à 18:40
oui t'as raison
merci mais j'ai résolu le probléme(grâce à sql*plus)
merci pour tout fliu..
0