Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2011, 18h36   #1
Invité de passage
 
mounir housni
Inscription : juillet 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : mounir housni

Informations forums :
Inscription : juillet 2010
Messages : 17
Points : 2
Points : 2
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 :
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 :
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
mounir.housni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 22h13   #2
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
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 ?
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 01h10   #3
Invité de passage
 
mounir housni
Inscription : juillet 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : mounir housni

Informations forums :
Inscription : juillet 2010
Messages : 17
Points : 2
Points : 2
voila le code dans le fichier aspx.cs qui s’exécute correctement
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
 
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 :
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);
        }
mounir.housni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 10h49   #4
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
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.
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h28.


 
 
 
 
Partenaires

Hébergement Web