Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/01/2013, 08h39   #1
liza_info
Invité de passage
 
Femme
Étudiant
Inscription : mai 2012
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2012
Messages : 11
Points : 0
Points : 0
Par défaut Erreur lors de la création d'un paquetage

bonjour a tous! je suis vraiement en état de panique, j'arrive pas a résoudre ce rpobléme!!! enfaite jai créer un package consacré aux achat des livre (chaque ajout d'un achat -> ajour s'une ligne d'achat)
voici le code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
CREATE OR REPLACE 
PACKAGE P_ACHAT AS
TYPE achNUPLET IS RECORD(
NUM_ACHAT ACHATS.NUM_ACHAT%TYPE,
DATE_ACHAT ACHAT.DATE_ACHAT%TYPE,
REFERENCE_BL_DISTRIBUTEUR ACHATS.REFERENCE_BL_DISTRIBUTEUR%TYPE,
ID_LIVRE  ligne_achat.id_livre%TYPE,
QUANTITE_ACHETEE ligne_achat.quantite_achetee%type );
 
CURSOR les_achats RETURN achNUPLET;
 
procedure afficher;
procedure ajout_Achat(NUM_ACHAT integer,DATE_ACHAT DATE, REFERENCE_BL_DISTRIBUTEUR varchar2,ID_LIVRE INTEGER, QUANTITE_ACHETEE integer);
procedure supprimer_achat(num integer );
procedure modifier_achat(NUM_ACHAT integer,ID_LIVRE INTEGER, QUANTITE_ACHETEE INTEGER);
procedure modifier_Lachat(NUM_ACHAT integer,DATE_ACHAT DATE, REFERENCE_BL_DISTRIBUTEUR varchar2);
END ;
--shows errors
 
CREATE OR REPLACE PACKAGE  BODY P_ACHAT AS
CURSOR les_achats RETURN achNUPLET IS SELECT * FROM LIGNE_ACHAT li INNER JOIN ACHATS ach ON ach.NUM_ACHAT= li.NUM_ACHAT
                             INNER JOIN   LIVRES L ON L.ID_LIVRE= li.ID_livre;
 
procedure afficher IS 
D achNUPLET;
BEGIN
  FOR D IN les_achats LOOP
 
  DBMS_OUTPUT.PUT_LINE(D.NUM_ACHAT||'  '||D.DATE_ACHAT||'  '||D.REFERENCE_BL_DISTRIBUTEUR||'  '||D.TITRE_LIVRE);
 
  END LOOP;
END;
 
procedure ajout_achat(num integer,Da Date,ref_BL_dist varchar2,id_livre INTEGER, quantite integer) IS
BEGIN
      INSERT INTO achats VALUES (num,da,ref_BL_dist);
      INSERT INTO ligne_achat VALUES (num, id_livre, quantite);
      --da=sysdate
      dbms_output.put_line('achat ajouter !');
END;
--supprimer un achat- supprimer une ligne d'achat
procedure supprimer_achat(num integer ) IS
BEGIN
      DELETE  FROM achats WHERE num_achat=num;
      DELETE  FROM ligne_achat WHERE num_achat=num;
END;
 
 
procedure modifier_achat(NUM_ACHAT integer,DATE_ACHAT DATE, REFERENCE_BL_DISTRIBUTEUR varchar2)IS
BEGIN
--execution begin update_distributeur_adresse(7,'charpenne','Lyon',69123,'RHONE' ); end;
UPDATE Achats SET  
                          NUM_ACHAT = num,
                          DATE_ACHAT = DATE_ACHAT,--sysdate
                          reference_bl_distributeur = REFERENCE_BL_DISTRIBUTEUR
 
                    WHERE NUM_ACHAT= NUM_ACHAT;
 
END;
 
 
procedure modifier_Lachat(NUM_ACHAT integer,ID_LIVRE INTEGER, QUANTITE_ACHETEE INTEGER) IS
BEGIN
UPDATE ligne_achat  SET  
                          NUM_ACHAT = NUM_ACHAT,                         
                          ID_LIVRE = ID_LIVRE,
                          QUANTITE_ACHETEE = QUANTITE_ACHETEE
 
                    WHERE NUM_ACHAT= NUM_ACHAT;
END;
 
END ;--fin package
 
--SHOW ERRORS;
et l'erreur c'est : Erreur(19,1): PLS-00103: Symbole "CREATE" rencontré

SVPP svppp aidez moii !!! merci d'avance
liza_info est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 12h31   #2
Pomalaix
Rédacteur
 
Inscription : décembre 2002
Messages : 2 651
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 651
Points : 4 123
Points : 4 123
La création d'un objet PL/SQL (un paquetage par exemple) doit se terminer par le caractère /, à placer sur une nouvelle ligne.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/01/2013, 12h37   #3
liza_info
Invité de passage
 
Femme
Étudiant
Inscription : mai 2012
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2012
Messages : 11
Points : 0
Points : 0
Citation:
Envoyé par Pomalaix Voir le message
La création d'un objet PL/SQL (un paquetage par exemple) doit se terminer par le caractère /, à placer sur une nouvelle ligne.
Je l'ai fait mais ça ne marche pas :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
CREATE OR REPLACE 
PACKAGE P_ACHAT AS
TYPE achNUPLET IS RECORD(
NUM_ACHAT ACHATS.NUM_ACHAT%TYPE,
DATE_ACHAT ACHAT.DATE_ACHAT%TYPE,
REFERENCE_BL_DISTRIBUTEUR ACHATS.REFERENCE_BL_DISTRIBUTEUR%TYPE,
ID_LIVRE  ligne_achat.id_livre%TYPE,
QUANTITE_ACHETEE ligne_achat.quantite_achetee%type );
 
CURSOR les_achats RETURN achNUPLET;
 
procedure afficher;
procedure ajout_Achat(NUM_ACHAT integer,DATE_ACHAT DATE, REFERENCE_BL_DISTRIBUTEUR varchar2,ID_LIVRE INTEGER, QUANTITE_ACHETEE integer);
procedure supprimer_achat(num integer );
procedure modifier_achat(NUM_ACHAT integer,ID_LIVRE INTEGER, QUANTITE_ACHETEE INTEGER);
procedure modifier_Lachat(NUM_ACHAT integer,DATE_ACHAT DATE, REFERENCE_BL_DISTRIBUTEUR varchar2);
END ;
/
--shows errors
 
CREATE OR REPLACE PACKAGE  BODY P_ACHAT AS
 
CURSOR les_achats RETURN achNUPLET IS 
 
SELECT * FROM LIGNE_ACHAT li INNER JOIN ACHATS ach ON ach.NUM_ACHAT= li.NUM_ACHAT
                             INNER JOIN   LIVRES L ON L.ID_LIVRE= li.ID_livre;
 
 
procedure afficher IS 
D achNUPLET;
BEGIN
  FOR D IN les_achats LOOP
 
  DBMS_OUTPUT.PUT_LINE(D.NUM_ACHAT||'  '||D.DATE_ACHAT||'  '||D.REFERENCE_BL_DISTRIBUTEUR||'  '||D.TITRE_LIVRE);
 
  END LOOP;
END;
 
procedure ajout_achat(num integer,Da Date,ref_BL_dist varchar2,id_livre INTEGER, quantite integer) IS
begin
      INSERT INTO achats VALUES (num,da,ref_BL_dist);
      INSERT INTO ligne_achat VALUES (num, id_livre, quantite);
      --da=sysdate
      dbms_output.put_line('achat ajouter !');
end;
--supprimer un achat- supprimer une ligne d'achat
procedure supprimer_achat(num integer ) IS
BEGIN
      DELETE  FROM achats WHERE num_achat=num;
      DELETE  FROM ligne_achat WHERE num_achat=num;
END;
 
 
procedure modifier_achat (NUM_ACHAT integer,DATE_ACHAT DATE, REFERENCE_BL_DISTRIBUTEUR varchar2) IS
BEGIN
--execution begin update_distributeur_adresse(7,'charpenne','Lyon',69123,'RHONE' ); end;
UPDATE Achats SET  
                          DATE_ACHAT = DATE_ACHAT,--sysdate
                          reference_bl_distributeur = REFERENCE_BL_DISTRIBUTEUR
 
                    WHERE NUM_ACHAT= NUM_ACHAT;
 
END;
 
 
procedure modifier_Lachat(NUM_ACHAT integer,ID_LIVRE INTEGER, QUANTITE_ACHETEE INTEGER) IS
BEGIN
UPDATE ligne_achat  SET  
                          ID_LIVRE = ID_LIVRE,
                          QUANTITE_ACHETEE = QUANTITE_ACHETEE
 
                    WHERE NUM_ACHAT= NUM_ACHAT;
END;
 
END ;--fin package
/
SHOW ERRORS;
Voilà l'erreur :
Citation:
Erreur(18,1): PLS-00103: Symbole "/" rencontré
Merci pour vos réponses.
liza_info est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 10h10   #4
islamov2000
Membre chevronné
 
Avatar de islamov2000
 
Homme islamov islamov
Ingénieur d'études & developpement en informatique
Inscription : septembre 2007
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme islamov islamov
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur d'études & developpement en informatique
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 465
Points : 642
Points : 642
Envoyer un message via Yahoo à islamov2000 Envoyer un message via Skype™ à islamov2000
Pour aller directement à la creation du package. Essaie de creer toutes les procedures et fonctions incluses dans ce package separement.
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
islamov2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 14h02   #5
mnitu
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 4 104
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 4 104
Points : 7 994
Points : 7 994
Citation:
Envoyé par liza_info Voir le message
je les fais ça ne marche pas!!!!!
...
C'est bon on vous à compris, nul besoin de crier!
J'ai fait copier coller de votre code dans une fenêtre de commandes et ça marche, le package et le corps ont été bien crées (avec des erreurs bien sûr parce que vous n'avez pas fourni les scripts de création des objets référencée)
Code :
1
2
3
4
5
6
 
SQL> SELECT count(*) FROM user_objects WHERE object_name = 'P_ACHAT';
 
  COUNT(*)
----------
         2
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h39.


 
 
 
 
Partenaires

Hébergement Web