Bonjour,
Je souhaiterai passer un tableau en paramètre d'une procédure stockée sur oracle 10g.
Ma procédure est bien crée sans erreur mais je n'arrive pas à l'exécuter.
Le message d'erreur est :
Voici le type et la procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 BEGIN utiinsert('nomtest', 'prenomtest', 'logintest', 'mdptest', 'mailtest', 'teltest', 1, 1); END; * ERREUR à la ligne 1 : ORA-06550: Ligne 1, colonne 7 : PLS-00306: numéro ou types d'arguments erronés dans appel à 'UTIINSERT' ORA-06550: Ligne 1, colonne 7 : PL/SQL: Statement ignored SP2-0103: Rien à exécuter dans la mémoire tampon SQL. Pas d'erreur.
Exécution de la procédure:
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 CREATE OR REPLACE TYPE ARRAY_INT IS TABLE of number; CREATE OR REPLACE PROCEDURE utiinsert ( p_utinom IN VARCHAR2, p_utiprenom IN VARCHAR2, p_utilogin IN VARCHAR2, p_utimdp IN VARCHAR2, p_utimail IN VARCHAR2, p_utitel VARCHAR2, p_utiprof IN NUMBER, p_utifonc IN ARRAY_INT ) IS v_utiid varchar2(50); BEGIN INSERT INTO utilisateur (utiid, profid, utinom, utiprenom, utilogin, utimdp, utimail, utitel, utisuppr) VALUES (S_UTILISATEUR.NEXTVAL, p_utiprof, p_utinom, p_utiprenom, p_utilogin, p_utimdp, p_utimail, p_utitel, 0) returning rowid into v_utiid; FORALL i IN p_utifonc.FIRST..p_utifonc.LAST INSERT INTO FONC_UTI(utiid, foncid) VALUES(v_utiid, p_utifonc(i)); END;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 exec utiinsert('nomtest', 'prenomtest', 'logintest', 'mdptest', 'mailtest', 'teltest', 1, 1);
Script de création de la base en pièce jointe.
Je n'arrive pas à trouver mon erreur.
Merci d'avance.![]()
Partager