Quelle version de formes?
méthode de la force Brute:
v_prohibited_chars VARCHAR2(100) := '[email protected]#$%^&*';
v_result VARCHAR2(4000);
...
-- strip prohibited characters
v_result := TRANSLATE(:form_field,'A'||v_prohibited_chars,'A');
-- if anything was stripped, lengths will differ
IF LENGTH(:form_field) <> LENGTH(v_result) THEN
error...
END IF
Si je comprends bien votre commentaire correctement, vous voulez être en mesure de filtrer le caractère spécial (s) sur le champ de formulaire?
Le code ci-dessus fait cela, et place le résultat dans v_result. Donc, si vous avez une valeur d'entrée de 'ABC# DEF #', et que votre masque de filtre est '! @ # $%^& *', après l'exécution de TRANSLATE votre résultat sera 'ABCDEF'. Vous pouvez ensuite réaffecter cette valeur à votre champ de formulaire. Si vous voulez juste dépouiller en silence le caractère, vous pouvez ignorer la vérification de longueur et attribuer simplement la sortie de retraduire à votre champ de formulaire:
:form_field := TRANSLATE(:form_field,'A'||v_prohibited_chars,'A');
Qu'est-ce TRADUIRE fait est de vérifier les caractères dans le premier paramètre contre les caractères dans le deuxième paramètre. Quand il trouve une correspondance, il traduit ce caractère dans le caractère correspondant dans le troisième paramètre. Si aucun caractère correspondant n'existe dans le troisième paramètre pour un dans le second, alors le caractère est traduit à NULL. Si un caractère n'apparaît pas dans le second paramètre, il reste inchangé. Ainsi, le caractère 'A' est traduit en 'A', et tous les autres caractères du masque sont traduits en NULL. Le troisième paramètre ne peut pas être NULL, d'où la traduction fictive de 'A' en 'A'.
Merci, Y at-il des fonctions inbuild disponibles dans Oracle pour le faire? Ou bien nous devons nous asseoir et écrire une fonction pour cette fonctionnalité. Cordialement, Vijay –