Que ce soit via un tableau ou une chaine avec séparateur, tout les paramètres seraient passés en chaine de caractères, ce qui peut poser soucis... Des variables typées sont plus sûres. De plus, une chaine avec séparateur suppose que le séparateur n'apparaisse dans aucune des "variables", ce qui est vrai au début, mais ensuite
Pour passer un tableau, il faut au préalable définir un type tableau, par exemple :
CREATE OR REPLACE TYPE VARCHAR2_TABLE AS TABLE OF VARCHAR2(4000);
Ceci dit, si la problématique est juste d'avoir une procédure avec des paramètres facultatifs, PLSQL prévoit tout à fait ça grâce à la valeur DEFAULT que l'on peut donner à chaque paramètre :
1 2 3 4 5 6 7
| PROCEDURE MaProc(
strNom IN VARCHAR2,
strPrenom IN VARCHAR2,
strPays IN VARCHAR2 DEFAULT 'FRANCE',
iDepartement IN NUMBER DEFAULT 34) IS...
EXECUTE MaProc(strNom => 'DUTOUR', strPrenom => 'Jean'); |
Et vous pouvez tester si la valeur est celle par defaut (NULL par exemple), ce qui signifie que le paramètre n'a pas été précisé.
Cordialement,
rbaraer
Partager