IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Problème de package


Sujet :

SQL Oracle

  1. #1
    Membre confirmé Avatar de Mat67
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 145
    Par défaut Problème de package
    Bonjour a tous,
    alors voilà, je suis stagiaire en première année de BTS et je suis chargé de modifier un site en php.
    Il ya bon nombre de fonctions et procédures déja réalisé.
    J'ai été obligé de changer la base de donnée (ajouter des champs dans une table) afin d'enregistrer des informations.

    donc voici la fonction que j'ai voulue modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	public function ProcStocClient(&$ClitNo,&$CliInt,&$CliSite,&$CliVille,&$CliAppel,&$CliNumErr,&$CliMsgErr)
    	{
    		$requete = "BEGIN pack_atalgrc.maj_cre_grcclient (:glc_no, :glc_interv, :glc_site, :glc_ville, :mode_appel, :err_num, :err_msg); END;";
    		$this->prepareRequete($requete);
    		OCIBindByName($this->ressourceRequete, ":glc_no", $CliNo, 100);
    		OCIBindByName($this->ressourceRequete, ":glc_interv", $CliInt, 100);
    		OCIBindByName($this->ressourceRequete, ":glc_site", $CliSite, 100);
    		OCIBindByName($this->ressourceRequete, ":glc_ville", $CliVille, 100);
    		OCIBindByName($this->ressourceRequete, ":mode_appel", $CliAppel, 1);
    		OCIBindByName($this->ressourceRequete, ":err_num", $CliNumErr, 100);
    		OCIBindByName($this->ressourceRequete, ":err_msg", $CliMsgErr, 100);
    		$this->executeRequete(OCI_DEFAULT); 
    	}
    mais voila lorsque j'ai modifié la fonction, et voulu tester les changements, j'ai obtenu uen erreur de package...
    Apres recherche j'ai plus ou moins compris que les package sont un regroupement de fonctions, et j'aimerai savoir comment modifier ces packages (si s'est possible de le faire sous sql+)
    Merci

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Il faut que tu retrouves le source du package afin de le modifier.
    Ensuite il faut le recompiler sur la base (par sql+).

  3. #3
    Membre confirmé Avatar de Mat67
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 145
    Par défaut
    Merci, mais j'ai un autre problème...
    Je viens de modifier le package (ajouté des champs a une table) est-ce que je dois également ajouté ces mêmes champs a la table sous sql+ (à l'aide de ALTER TABLE ... ADD...), ou le package le fait automatiquement.

    Voilci le package original de la table que je souhaitre modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
       PROCEDURE maj_cre_grcclient(
       GCL_NO IN OUT varchar2,
       GCL_INTERV IN varchar2,
       GCL_SITE IN varchar2,
       GCL_VILLE IN varchar2,
       mode_appel IN NUMBER,
       err_num OUT NUMBER,
       err_msg OUT VARCHAR2);
     
    /////////////////////
     
     
    PROCEDURE maj_cre_grcclient(
       GCL_NO IN OUT varchar2,
       GCL_INTERV IN varchar2,
       GCL_SITE IN varchar2,
       GCL_VILLE IN varchar2,
       mode_appel IN NUMBER,
       err_num OUT NUMBER,
       err_msg OUT VARCHAR2) IS
     
       /* mode_appel = 1  ==> MODE MAJ
          mode_appel = 2  ==> MODE CREATION
          mode_appel = 3  ==> MODE SUPPRESSION */
     
       enreg_utilise EXCEPTION;
     
    BEGIN
       BEGIN
          IF mode_appel = 1 THEN  /* MODE MAJ */
             update grcclient set
                GCLINTERV=GCL_INTERV,
                GCLSITE=GCL_SITE,
                GCLVILLE=GCL_VILLE
             where GCLNO=GCL_NO;
     
          ELSIF mode_appel = 2 THEN /* MODE CREATION */
             select seqgrcclient.nextval into GCL_NO from dual;
             insert into grcclient(
                GCLNO, GCLINTERV, GCLSITE, GCLVILLE)
             values (
                GCL_NO, GCL_INTERV, GCL_SITE, GCL_VILLE);
     
          ELSIF mode_appel = 3 THEN /* MODE SUPPRESSION */
             delete from grcclient where GCLNO = GCL_NO;
     
          ELSE
             err_num := mode_appel;
             err_msg := 'MODE D''APPEL DE LA PROCEDURE NON PRIS EN CHARGE';
          END IF;
          COMMIT WORK;
     
       EXCEPTION
          WHEN DUP_VAL_ON_INDEX THEN
             ROLLBACK WORK;
             err_num := SQLCODE;
             err_msg := 'EXISTE';
          WHEN enreg_utilise THEN
             ROLLBACK WORK;
             err_num := SQLCODE;
             err_msg := 'UTILISE';
          WHEN OTHERS THEN
             ROLLBACK WORK;
             err_num := SQLCODE;
             err_msg := SUBSTR(SQLERRM,1,200);
       END;
    END;
    et voici ce que j'ai modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    
    PROCEDURE maj_cre_grcclient(
       GCL_NO IN OUT varchar2,
       GCL_INTERV IN varchar2,
       GCL_SITE IN varchar2,
       GCL_VILLE IN varchar2,
       GCL_ADRESSE IN varchar2,
       GCL_CP IN varchar2,
       mode_appel IN NUMBER,
       err_num OUT NUMBER,
       err_msg OUT VARCHAR2) IS
    
       /* mode_appel = 1  ==> MODE MAJ
          mode_appel = 2  ==> MODE CREATION
          mode_appel = 3  ==> MODE SUPPRESSION */
    
       enreg_utilise EXCEPTION;
    
    BEGIN
       BEGIN
          IF mode_appel = 1 THEN  /* MODE MAJ */
             update grcclient set
                GCLINTERV=GCL_INTERV,
                GCLSITE=GCL_SITE,
                GCLVILLE=GCL_VILLE
                GCLADRESSE=GCL_ADRESSE,
                GCLCP=GCL_CP,
             where GCLNO=GCL_NO;
    
          ELSIF mode_appel = 2 THEN /* MODE CREATION */
             select seqgrcclient.nextval into GCL_NO from dual;
             insert into grcclient(
                GCLNO, GCLINTERV, GCLSITE, GCLVILLE, GCLADRESSE, GCLCP)
             values (
                GCL_NO, GCL_INTERV, GCL_SITE, GCL_VILLE, GCL_ADRESSE, GCL_CP);
    
          ELSIF mode_appel = 3 THEN /* MODE SUPPRESSION */
             delete from grcclient where GCLNO = GCL_NO;
    
          ELSE
             err_num := mode_appel;
             err_msg := 'MODE D''APPEL DE LA PROCEDURE NON PRIS EN CHARGE';
          END IF;
          COMMIT WORK;
    
       EXCEPTION
          WHEN DUP_VAL_ON_INDEX THEN
             ROLLBACK WORK;
             err_num := SQLCODE;
             err_msg := 'EXISTE';
          WHEN enreg_utilise THEN
             ROLLBACK WORK;
             err_num := SQLCODE;
             err_msg := 'UTILISE';
          WHEN OTHERS THEN
             ROLLBACK WORK;
             err_num := SQLCODE;
             err_msg := SUBSTR(SQLERRM,1,200);
       END;
    END;
    et lorsque je compil tout sa j'obtient des erreurs :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Package créé.
     
     
    Attention : Corps de package créé avec erreurs de compilation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PACK_ATALGRC                   PACKAGE BODY          1         81          4
    PL/SQL: ORA-00933: La commande SQL ne se termine pas correctement
     
    PACK_ATALGRC                   PACKAGE BODY          2         77         10
    PL/SQL: SQL Statement ignored
    Merci d'avance !

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Regarde la syntaxe de ton update, et plus précisément les virgules

  5. #5
    Membre confirmé Avatar de Mat67
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 145
    Par défaut
    Ah oui tient encore une erreur à la *** ^^

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JNI]Problème de package avec jni
    Par picomz dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 10/08/2006, 15h43
  2. [ClassLoader] Chargement dynamique d'une classe -> problème avec packages !
    Par ymerej dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 31/05/2006, 21h37
  3. probléme de package dans eclipse
    Par bf83 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/04/2006, 14h29
  4. [Eclipse 3.1] Problème de package
    Par yakanet dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 24/02/2006, 14h53
  5. [servlet] [jsp] problème de package
    Par Erreip dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/11/2005, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo