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,
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;
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
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'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 !

J'avoue que je m'y connais peu en manipulation de collection !

Merci de votre réponse