我们正在使用oracle表单... 我们必须保护(或)阻止特殊字符的文本项字段。 喜欢(!@#$%^& *) 请发送一些指导......提前感谢...
此致 维杰
答案 0 :(得分:2)
当您的文本框作为某些输入的文本时,您必须具有验证所有输入的功能。
在该功能上,您可以使用无效值范围。该范围以ASCII格式表示。
答案 1 :(得分:2)
您可以使用格式掩码属性,如999.99
答案 2 :(得分:2)
哪个版本的表单?
蛮力方法:
v_prohibited_chars VARCHAR2(100) := '!@#$%^&*';
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
如果我正确理解您的评论,您希望能够从表单字段中过滤特殊字符吗?
上面的代码执行此操作,并将结果放在v_result中。因此,如果您的输入值为'ABC#DEF#',并且您的过滤器掩码为'!@#$%^&amp; *',则在执行TRANSLATE后,您的结果将为'ABCDEF'。然后,您可以将此值重新分配给表单字段。如果您只是想以静默方式去除字符,可以跳过LENGTH检查并简单地将TRANSLATE的输出分配回表单字段:
:form_field := TRANSLATE(:form_field,'A'||v_prohibited_chars,'A');
TRANSLATE做的是检查第一个参数中的字符与第二个参数中的字符。当找到匹配项时,它会将该字符转换为第三个参数中的相应字符。如果第二个参数中第一个参数中没有对应的字符,则该字符将转换为NULL。如果第二个参数中没有出现字符,则它保持不变。因此,字符“A”被转换为“A”,并且掩码中的所有其他字符都被转换为NULL。第三个参数不能为NULL,因此将'A'虚拟转换为'A'。