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 26/07/2011, 11h54   #1
Invité régulier
 
Inscription : avril 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 29
Points : 7
Points : 7
Par défaut erreur execution procedure

Bonjour
je viens de créer une procédure , ma procedure se crée sans problème mais au moment de l'execution j'ai une erreur que je n'arrive pas à localiser:

la procedure
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
 
CREATE OR REPLACE procedure saveItemAddition(itemCompt out integer,rFQ_Number IN RFQ_PARTS.RFQ_RFQ_ID%TYPE, part_replaced IN RFQ_PARTS.PART_REPLACED_ID%TYPE, nb_of_parts_by_unit IN RFQ_PARTS.RFQPARTS_NBPARTSBYUNIT%TYPE, target_price IN RFQ_PARTS.RFQPARTS_TARGETPRICE%TYPE,  comments IN RFQ_PARTS.RFQPARTS_COMMENTS%TYPE, catalog_part RFQ_PARTS.PART_CATALOG%TYPE, ramp_up_qty IN RFQ_PARTS.RFQPARTS_RAMPUPQTY%TYPE,ramp_up_date IN RFQ_PARTS.RFQPARTS_RAMPUPDATE%TYPE, full_prod_qty IN RFQ_PARTS.RFQPARTS_FULLQTY%TYPE, full_Prod_date IN RFQ_PARTS.RFQPARTS_FULLDATE%TYPE,proto_qty IN RFQ_PARTS.RFQPARTS_PROTOQTY%TYPE, proto_date IN RFQ_PARTS.RFQPARTS_PROTODATE%TYPE , pre_serie_qty IN RFQ_PARTS.RFQPARTS_PRESERIEQTY%TYPE, pre_serie_date IN RFQ_PARTS.RFQPARTS_PRESERIEDATE%TYPE)
IS
 
 
begin
--Test si le nombre d'item>1
IF (itemCompt>1)
then
UPDATE RFQ_PARTS 
SET 
 
RFQ_PARTS.RFQ_RFQ_ID=rFQ_Number, 
RFQ_PARTS.PART_REPLACED_ID=part_replaced,
RFQ_PARTS.RFQPARTS_NBPARTSBYUNIT=nb_of_parts_by_unit ,
RFQ_PARTS.RFQPARTS_TARGETPRICE =target_price ,
RFQ_PARTS.RFQPARTS_COMMENTS=comments ,
RFQ_PARTS.PART_CATALOG=catalog_part ,
RFQ_PARTS.RFQPARTS_RAMPUPQTY =ramp_up_qty ,
RFQ_PARTS.RFQPARTS_RAMPUPDATE=ramp_up_date ,
RFQ_PARTS.RFQPARTS_FULLQTY=full_prod_qty ,
RFQ_PARTS.RFQPARTS_FULLDATE=full_Prod_date ,
RFQ_PARTS.RFQPARTS_PROTOQTY=proto_qty ,
RFQ_PARTS.RFQPARTS_PROTODATE=proto_date ,
RFQ_PARTS.RFQPARTS_PRESERIEQTY=pre_serie_qty ,
RFQ_PARTS.RFQPARTS_PRESERIEDATE=pre_serie_date  
WHERE 
RFQ_PARTS.RFQPARTS_ID=( SELECT max(RFQPARTS_ID) FROM RFQ_PARTS)-1;
 
end IF;
end;
l'appel de la procédure
Code :
1
2
 
execute saveItemAddition(6, 6, 6, 6,  'comments RFQ_PARTS.RFQPARTS_COMMENTS%TYPE', 6, 6,NULL, 6,NULL,6, NULL , 6, NULL);
l'erreur
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Error starting at line 1 IN command:
execute saveItemAddition(6, 6, 6, 6,  'comments RFQ_PARTS.RFQPARTS_COMMENTS%TYPE', 6, 6,NULL, 6,NULL,6, NULL , 6, NULL);
Error report:
ORA-06550: Ligne 1, colonne 7 :
PLS-00306: wrong number OR types of arguments IN call TO 'SAVEITEMADDITION'
ORA-06550: Ligne 1, colonne 7 :
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
est ce que quelqu'un pourrait m'aider à résoudre le problème???


Merci
autregalaxie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h18   #2
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
Bonjour,

Avec une indentation c'est déjà plus lisible :

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
CREATE OR REPLACE procedure saveItemAddition(itemCompt           out integer,
                                             rFQ_Number          IN RFQ_PARTS.RFQ_RFQ_ID%TYPE,
                                             part_replaced       IN RFQ_PARTS.PART_REPLACED_ID%TYPE,
                                             nb_of_parts_by_unit IN RFQ_PARTS.RFQPARTS_NBPARTSBYUNIT%TYPE,
                                             target_price        IN RFQ_PARTS.RFQPARTS_TARGETPRICE%TYPE,
                                             comments            IN RFQ_PARTS.RFQPARTS_COMMENTS%TYPE,
                                             catalog_part        IN RFQ_PARTS.PART_CATALOG%TYPE,
                                             ramp_up_qty         IN RFQ_PARTS.RFQPARTS_RAMPUPQTY%TYPE,
                                             ramp_up_date        IN RFQ_PARTS.RFQPARTS_RAMPUPDATE%TYPE,
                                             full_prod_qty       IN RFQ_PARTS.RFQPARTS_FULLQTY%TYPE,
                                             full_Prod_date      IN RFQ_PARTS.RFQPARTS_FULLDATE%TYPE,
                                             proto_qty           IN RFQ_PARTS.RFQPARTS_PROTOQTY%TYPE,
                                             proto_date          IN RFQ_PARTS.RFQPARTS_PROTODATE%TYPE,
                                             pre_serie_qty       IN RFQ_PARTS.RFQPARTS_PRESERIEQTY%TYPE,
                                             pre_serie_date      IN RFQ_PARTS.RFQPARTS_PRESERIEDATE%TYPE) IS

begin
  --Test si le nombre d'item>1
  IF (itemCompt > 1) then
    UPDATE RFQ_PARTS
       SET RFQ_PARTS.RFQ_RFQ_ID = rFQ_Number,
           RFQ_PARTS.PART_REPLACED_ID       = part_replaced,
           RFQ_PARTS.RFQPARTS_NBPARTSBYUNIT = nb_of_parts_by_unit,
           RFQ_PARTS.RFQPARTS_TARGETPRICE   = target_price,
           RFQ_PARTS.RFQPARTS_COMMENTS      = comments,
           RFQ_PARTS.PART_CATALOG           = catalog_part,
           RFQ_PARTS.RFQPARTS_RAMPUPQTY     = ramp_up_qty,
           RFQ_PARTS.RFQPARTS_RAMPUPDATE    = ramp_up_date,
           RFQ_PARTS.RFQPARTS_FULLQTY       = full_prod_qty,
           RFQ_PARTS.RFQPARTS_FULLDATE      = full_Prod_date,
           RFQ_PARTS.RFQPARTS_PROTOQTY      = proto_qty,
           RFQ_PARTS.RFQPARTS_PROTODATE     = proto_date,
           RFQ_PARTS.RFQPARTS_PRESERIEQTY   = pre_serie_qty,
           RFQ_PARTS.RFQPARTS_PRESERIEDATE  = pre_serie_date
     WHERE RFQ_PARTS.RFQPARTS_ID =
           (SELECT max(RFQPARTS_ID) FROM RFQ_PARTS) - 1;
  
  end IF;
end;
On compte 15 arguments .

Dans ton appel :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
execute saveItemAddition(6, 
                         6, 
                         6, 
                         6,  
                         'comments RFQ_PARTS.RFQPARTS_COMMENTS%TYPE', 
                         6, 
                         6,
                         NULL, 
                         6,
                         NULL,
                         6, 
                         NULL , 
                         6,
                          NULL);
On en compte 14 !!!

Il en manque 1

ce qui correspond assez au code erreur :
Citation:
PLS-00306: wrong number OR types of arguments IN call TO 'SAVEITEMADDITION'
Cordialement
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h19   #3
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,

Comme le dit le message d'erreur
Code :
PLS-00306: wrong number OR types of arguments IN call TO 'SAVEITEMADDITION'
l'appel à la procédure :
Code :
execute saveItemAddition(6, 6, 6, 6,  'comments RFQ_PARTS.RFQPARTS_COMMENTS%TYPE', 6, 6,NULL, 6,NULL,6, NULL , 6, NULL);
ne correspond pas au nombre de paramètres de la déclaration (dans la déclaration il y a 5 paramètres avant le commentaire contre 4 dans l'appel) :
Code :
CREATE OR REPLACE procedure saveItemAddition(itemCompt out integer,rFQ_Number IN RFQ_PARTS.RFQ_RFQ_ID%TYPE, part_replaced IN RFQ_PARTS.PART_REPLACED_ID%TYPE, nb_of_parts_by_unit IN RFQ_PARTS.RFQPARTS_NBPARTSBYUNIT%TYPE, target_price IN RFQ_PARTS.RFQPARTS_TARGETPRICE%TYPE,  comments IN RFQ_PARTS.RFQPARTS_COMMENTS%TYPE, catalog_part RFQ_PARTS.PART_CATALOG%TYPE, ramp_up_qty IN RFQ_PARTS.RFQPARTS_RAMPUPQTY%TYPE,ramp_up_date IN RFQ_PARTS.RFQPARTS_RAMPUPDATE%TYPE, full_prod_qty IN RFQ_PARTS.RFQPARTS_FULLQTY%TYPE, full_Prod_date IN RFQ_PARTS.RFQPARTS_FULLDATE%TYPE,proto_qty IN RFQ_PARTS.RFQPARTS_PROTOQTY%TYPE, proto_date IN RFQ_PARTS.RFQPARTS_PROTODATE%TYPE , pre_serie_qty IN RFQ_PARTS.RFQPARTS_PRESERIEQTY%TYPE, pre_serie_date IN RFQ_PARTS.RFQPARTS_PRESERIEDATE%TYPE)
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h31   #4
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
Bonjour,

D'ailleurs un bon moyen de ne pas en oublier est d'utiliser cette syntaxe :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DECLARE
ln_itemCompt	NUMBER;
BEGIN
saveItemAddition(itemCompt           => ln_itemCompt				    ,
	         rFQ_Number          => 6                                           ,																																																								
	         part_replaced       => 6                                           ,																																																								
	         nb_of_parts_by_unit => 6                                           ,																																																								
	         target_price        => 6                                           ,																																																								
	         comments            => 'comments RFQ_PARTS.RFQPARTS_COMMENTS%TYPE' ,																																																								
	         catalog_part        => 6                                           ,																																																								
	         ramp_up_qty         => 6                                           ,																																																								
	         ramp_up_date        => NULL                                        ,																																																								
	         full_prod_qty       => 6                                           ,																																																								
	         full_Prod_date      => NULL                                        ,																																																								
	         proto_qty           => 6                                           ,																																																								
	         proto_date          => NULL                                        ,																																																								
	         pre_serie_qty       => 6                                           ,																																																								
	         pre_serie_date      => NULL                                         
	         );
END;
/
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h33   #5
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Bonjour,

Voici votre procédure

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
PROCEDURE saveItemAddition(
    itemCompt OUT INTEGER ,
    rFQ_Number          IN RFQ_PARTS.RFQ_RFQ_ID%TYPE ,
    part_replaced       IN RFQ_PARTS.PART_REPLACED_ID%TYPE ,
    nb_of_parts_by_unit IN RFQ_PARTS.RFQPARTS_NBPARTSBYUNIT%TYPE ,
    target_price        IN RFQ_PARTS.RFQPARTS_TARGETPRICE%TYPE ,
    comments            IN RFQ_PARTS.RFQPARTS_COMMENTS%TYPE ,
    catalog_part RFQ_PARTS.PART_CATALOG%TYPE ,
    ramp_up_qty    IN RFQ_PARTS.RFQPARTS_RAMPUPQTY%TYPE ,
    ramp_up_date   IN RFQ_PARTS.RFQPARTS_RAMPUPDATE%TYPE ,
    full_prod_qty  IN RFQ_PARTS.RFQPARTS_FULLQTY%TYPE ,
    full_Prod_date IN RFQ_PARTS.RFQPARTS_FULLDATE%TYPE ,
    proto_qty      IN RFQ_PARTS.RFQPARTS_PROTOQTY%TYPE ,
    proto_date     IN RFQ_PARTS.RFQPARTS_PROTODATE%TYPE ,
    pre_serie_qty  IN RFQ_PARTS.RFQPARTS_PRESERIEQTY%TYPE ,
    pre_serie_date IN RFQ_PARTS.RFQPARTS_PRESERIEDATE%TYPE)
et voici son appel
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SAVEITEMADDITION(   6
                  , 6
                  , 6
                  , 6
                  , 'comments RFQ_PARTS.RFQPARTS_COMMENTS%TYPE'
                  , 6
                  , 6
                  , NULL
                  , 6
                  , NULL
                  , 6
                  , NULL 
                  , 6
                  , NULL);
Dans un premier temps, veuillez compter le nombre de paramètres dans la création de la procédure et dans l'appel de celle-ci !!! cela semble ne pas être le même

Dans un second temps, veuillez vérifier que les paramètres transmis dans l'appel coïncident avec leur type correspondant défini dans la procédure.

Il semblerait aussi que vous avez mal recopié le paramètre numéro 7 (catalog_part)

Bien respectueusement

Mohamed Houri
Mohamed.Houri 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 07h38.


 
 
 
 
Partenaires

Hébergement Web