Bonjour
En cherchant sur le net, j'ai appris qu'on ne pouvait pas faire ceci :
car le moteur SQL tourne dans un environnement séparé et ne trouve pas du coup la fonction toto, faute qu'elle soit déclarée dans un package public.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Declare Function toto(p_in varchar2) return varchar2 is Begin return replace(p_in,.....); End toto; Begin Insert into titi values ( toto('AAA') ); End;
Il y a t-il un moyen de contourner cela ? En effet je n'ai pas envie de déclarer un package temporaire, le compiler puis le dropper et tout le toutim juste pour un simple "script" sql.
Le fait d'utiliser une fonction et donc du PL/SQL au lieu d'un simple code sql avec le replace dans le insert est du au fait qu'il y a en fait énormément de champs dans ma table avec à chaque fois bcp de replace identiques à effectuer sur chaque, je souhaite donc rendre l'ensemble plus lisible et plus facile à maintenir (modification ultérieure des replace).
Merci d'avance
Loko
Partager