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

PL/SQL Oracle Discussion :

Correction procédure


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut Correction procédure
    Bonjour,

    Je dois creer un ficheir de commandes pl/sql qui permet de mettre dans la table Produit les valeur du produit mais j'ai un petit problème

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    CREATE OR REPLACE PROCEDURE MAJ_PRODUIT(
     vID_PRODUIT                    PRODUIT.ID_PRODUIT%TYPE,
     vID_TYPE_P                     PRODUIT.ID_TYPE_P%TYPE,
     vID_DEPARTEMENT                PRODUIT.ID_DEPARTEMENT%TYPE,
     vID_CATEGORIE_PROD             PRODUIT.ID_CATEGORIE_PROD%TYPE,
     vLIBELLE_PRODUIT               PRODUIT.LIBELLE_PRODUIT%TYPE,
     vCONTRIBUTION_LIBRE_PERMISE    PRODUIT.CONTRIBUTION_LIBRE_PERMISE%TYPE,
     vFREQUENCE_CONTRIBUTIONS       PRODUIT.FREQUENCE_CONTRIBUTIONS%TYPE,
     vCAPITAL_MAXIMAL_ASSURE        PRODUIT.CAPITAL_MAXIMAL_ASSURE%TYPE,
     vCAPITAL_MINIMAL_ASSURE        PRODUIT.CAPITAL_MINIMAL_ASSURE%TYPE,
     vAGE_SORTIE                    PRODUIT.AGE_SORTIE%TYPE,
     vAGE_MAXIMUM                   PRODUIT.AGE_MAXIMUM%TYPE,
     vAGE_MINIMUM_                  PRODUIT.AGE_MINIMUM_%TYPE,
     vREASSURANCE                   PRODUIT.REASSURANCE%TYPE,
     vCOASSURANCE                   PRODUIT.COASSURANCE%TYPE,
     vCONTRIBUTION_MINIMAL          PRODUIT.CONTRIBUTION_MINIMAL%TYPE,
     vCONTRIBUTION_MAXIMAL          PRODUIT.CONTRIBUTION_MAXIMAL%TYPE,
     
     
      errMessage Out         Varchar2,
      IdRetour   Out         Number
     )
     
     
    IS
     
     
    NumProduit           Number; 
     
     
    begin
     
      errMessage:=' ';
     
          SELECT NVL(MAX(ID_PRODUIT),0) + 1
          INTO NumProduit
          FROM PRODUIT;
     
          INSERT INTO PRODUIT 
               (
     
               ID_PRODUIT,
               ID_TYPE_P,
        ID_DEPARTEMENT,
        ID_CATEGORIE_PROD,
        LIBELLE_PRODUIT,
        CONTRIBUTION_LIBRE_PERMISE,
        FREQUENCE_CONTRIBUTIONS,
        CAPITAL_MAXIMAL_ASSURE,
        CAPITAL_MINIMAL_ASSURE,
        AGE_SORTIE,
        AGE_MAXIMUM,
        AGE_MINIMUM_,
        REASSURANCE,
        COASSURANCE,
        CONTRIBUTION_MINIMAL,
        CONTRIBUTION_MAXIMAL   
     
     
     
               )
            VALUES
               ( 
               NumProduit, 
               vID_TYPE_P,
        vID_DEPARTEMENT,
        vID_CATEGORIE_PROD,
        vLIBELLE_PRODUIT,
        vCONTRIBUTION_LIBRE_PERMISE,
        vFREQUENCE_CONTRIBUTIONS,
        vCAPITAL_MAXIMAL_ASSURE,
        vCAPITAL_MINIMAL_ASSURE,
        vAGE_SORTIE,
        vAGE_MAXIMUM,
        vAGE_MINIMUM_,
        vREASSURANCE,
        vCOASSURANCE,
        vCONTRIBUTION_MINIMAL,
        vCONTRIBUTION_MAXIMAL   
              );
     
            IdRetour := NumProduit;                         
     
     
      COMMIT;
     
    EXCEPTION
       When OTHERS Then
            errMessage := Substr('Err procedure "procMaj_PRODUIT" : ' || TO_CHAR(SQLCODE)||': '||SQLERRM,1,100); 
     
     
     END MAJ_PRODUIT;
    /
    mais il me donne l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ORA-06550: line 1, column 7:
    PLS-00306: wrong number or types of arguments in call to 'MAJ_PRODUIT'
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored

  2. #2
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Bonjour,

    Pourquoi faire en PL/SQL ce qui peut être fait directement en SQL ?
    Pourquoi n'utilisez vous pas une séquence plutôt qu'un incrément sur une valeur maximale ?

    Dans votre code PL vous passez le parmètre vID_PRODUIT que vous n'utilisez pas dans le code ?

    Pourquoi nommez vous votre procédure MAJ alors que vous faites un ajoût ?

    Votre erreur vient du fait que vous ne passez pas le bon nombre d'arguments lorsque vous appelez votre procédure. Pouvez vous nous donner la commande qui a généré ces erreurs ?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    voila le code dans le fichier aspx.cs qui s’exécute correctement
    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
     
    void AjouterProduit()
        {
            Beans.Produit prd = new Beans.Produit();
     
     
     
            prd.FidTypeProduit = Utilities.StringToInt(ddlTypeProdui.SelectedValue.ToString());
            prd.FidDepartement = Utilities.StringToInt(ddlDepartement.SelectedValue.ToString());
            prd.FidCategorieProduit = Utilities.StringToInt(ddlcategorie.SelectedValue.ToString());
            prd.LibelleProduit = TextBox1.Text;
            prd.ContributionLibrePermise = DropDownList8.SelectedItem.Text;
            prd.FrequenceContributions = DropDownList7.SelectedItem.Text;
            prd.CapitalMaximalAssure = Utilities.StringToInt(TextBox3.Text);
            prd.CapitalMinimalAssure = Utilities.StringToInt(TextBox16.Text);
            prd.AgeSortie = Utilities.StringToInt(DropDownList6.SelectedItem.Text);
            prd.AgeMaximum = Utilities.StringToInt(DropDownList5.SelectedItem.Text);
            prd.AgeMinimum = Utilities.StringToInt(DropDownList4.SelectedItem.Text);
            prd.Reassurance = DropDownList12.SelectedItem.Text;
            prd.Coassurance = DropDownList10.SelectedItem.Text;
            prd.ContributionMinimal = Utilities.StringToInt(TextBox18.Text);
            prd.ContributionMaximal = Utilities.StringToInt(TextBox2.Text);
     
            _dalProduit.InsertProduit(prd);
     
        }
    mais la il me donne l'erreur


    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
     public void InsertProduit(Beans.Produit prod)
            {
                Database _db = DatabaseFactory.CreateDatabase();
     
                DbCommand insertCommand = _db.GetStoredProcCommand("MAJ_PRODUIT");
                _db.AddInParameter(insertCommand, "vID_TYPE_P", DbType.Int16, prod.FidTypeProduit);
                _db.AddInParameter(insertCommand, "vID_DEPARTEMENT", DbType.Int16, prod.FidDepartement);
                _db.AddInParameter(insertCommand, "vID_CATEGORIE_PROD", DbType.Int16, prod.FidCategorieProduit);
                _db.AddInParameter(insertCommand, "vLIBELLE_PRODUIT", DbType.String, prod.LibelleProduit);
                _db.AddInParameter(insertCommand, "vCONTRIBUTION_LIBRE_PERMISE", DbType.String, prod.ContributionLibrePermise);
                _db.AddInParameter(insertCommand, "vFREQUENCE_CONTRIBUTIONS", DbType.String, prod.FrequenceContributions);
                _db.AddInParameter(insertCommand, "vCAPITAL_MAXIMAL_ASSURE", DbType.Int64, prod.CapitalMaximalAssure);
                _db.AddInParameter(insertCommand, "vCAPITAL_MINIMAL_ASSURE", DbType.Int64, prod.CapitalMinimalAssure);
                _db.AddInParameter(insertCommand, "vAGE_SORTIE", DbType.Int16, prod.AgeSortie);
                _db.AddInParameter(insertCommand, "vAGE_MAXIMUM", DbType.Int16, prod.AgeMaximum);
                _db.AddInParameter(insertCommand, "vAGE_MINIMUM_", DbType.Int16, prod.AgeMinimum);
                _db.AddInParameter(insertCommand, "vREASSURANCE", DbType.String, prod.Reassurance);
                _db.AddInParameter(insertCommand, "vCOASSURANCE", DbType.String, prod.Coassurance);
                _db.AddInParameter(insertCommand, "vCONTRIBUTION_MINIMAL", DbType.Int64, prod.ContributionMinimal);
                _db.AddInParameter(insertCommand, "vCONTRIBUTION_MAXIMAL", DbType.Int64, prod.ContributionMaximal);
     
     
                _db.ExecuteNonQuery(insertCommand);
            }

  4. #4
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Bonjour,

    Comme le précise l'appel à la procédure, vous ne fournissez pas tous les paramètres à la procédure.

    il manque vID_PRODUIT err_message et id_retour.

Discussions similaires

  1. Déplacer fichier (procédure correcte?)
    Par Invité dans le forum VBScript
    Réponses: 3
    Dernier message: 28/06/2012, 22h26
  2. Réponses: 4
    Dernier message: 20/06/2011, 14h36
  3. Réponses: 5
    Dernier message: 10/11/2007, 10h20
  4. Procédure correctement compilée?
    Par Enano dans le forum Oracle
    Réponses: 2
    Dernier message: 03/04/2006, 11h37
  5. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08

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