2009-02-19 4 views

Répondre

2

Lorsque votre zone de texte comme un texte entré vous avez à avoir une fonction qui valide toutes les entrées.

Cette fonction vous permet de désactiver les valeurs non valides. Cette plage est faite en ASCII.

+0

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 –

2

Vous pouvez utiliser la propriété de masque de format comme 999,99

2

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'.

+0

Merci, Nous devons écrire un code pour filtrer un caractère spécial qui se produit n'importe où dans le texte actuel .. tous les caractères changeront l'exemple, 'JI345LP #' ou 'AB # CD' il n'y a pas de séquence appropriée ... dans ce cas comment obtenir la longueur du champ en utilisant traduire ... s'il vous plaît nous guider ... Merci encore. –

+0

Modifié ma réponse pour répondre à votre commentaire. – DCookie

Questions connexes