Bonjour,
Mon but est très simple. Je cherche à passer un paramètre de type TABLE à une procédure. Et cette table est de type RECORD. Cela est défini dans un package. En voici un extrait,
Ainsi, j'ai une procédure, bien entendu dans le même package, avec la définition suivante: PKG_SALAIRE.INSERT_RANGE(vi_ranges IN range_array_type). Je veux utiliser utiliser cette procédure pour insérer des valeurs. Donc je procède comme suit avec SQL Developper:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TYPE range_type IS RECORD (start_sal emp.sal%TYPE, end_sal emp.sal%TYPE); TYPE range_array_type IS TABLE OF range_type;
J'ai une erreur PLS-00222 : No function with name 'range_type' exists in this scope. Et lorsque j'enlève pkg_salaire.range_type, j'ai l'erreur PLS-00306 : wrong number or type of arguments in call to range_array_type !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 DECLARE vi_ranges PKG_SALAIRE.range_array_type; BEGIN vi_ranges := PKG_SALAIRE.range_array_type ( pkg_salaire.range_type(5500,6000), pkg_salaire.range_type(6001,6500), pkg_salaire.range_type(6501,7000)); PKG_SALAIRE.INSERT_RANGE ( vi_ranges => vi_ranges); END;
J'avoue que je m'y connais peu en manipulation de collection !
Merci de votre réponse
Partager