1 pièce(s) jointe(s)
Tableau en paramètre d'une procédure stockée
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 :
Code:
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. |
Voici le type et la procédure :
Code:
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; |
Exécution de la procédure:
Code:
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. ;)