【发布时间】:2016-11-27 14:56:00
【问题描述】:
我想检查作为输入提供的电子邮件地址是否有效。我创建了以下功能。该函数已成功创建,但是当我尝试运行该函数时,我无法获得所需的输出。
CREATE OR REPLACE FUNCTION email_validate(p_email IN varchar2)
return BOOLEAN
is
emailregexp constant varchar2(1000):= '^[a-z0-9._-]+@[a-z0-9.-]+\.[a-z]{1,10}$';
BEGIN
IF regexp_like(p_email,emailregexp ,'i') THEN
RETURN true;
ELSE
RETURN false;
END IF;
END;
我尝试检查输出的方式是:
DECLARE
result BOOLEAN;
BEGIN
result:= email_validate('abcd@gmail.com');
dbms_output.put_line(result);
END;
【问题讨论】:
-
不确定 PLSQL 正则表达式,但您可能应该转义组内的最后一个
-字符 -
函数已成功创建,但我无法调用该函数,就像我想运行该函数并查看 True 或 False。
-
"dbms_output.put_line 未重载以接受布尔参数。" stackoverflow.com/a/13560073/21336
-
与您的问题没有直接关系,但您的正则表达式将拒绝有效的电子邮件地址。它会拒绝的最常见的格式是
foo+bar@example.com,但还有很多其他格式。验证电子邮件地址的最佳方法实际上是“甚至不用费心去尝试”,并且没有太多令人信服的论据反对这一点。但与此同时,请阅读stackoverflow.com/questions/201323/…。 -
您可能在 cmets 中有足够的信息并已回答以解决您的问题。作为“元”观察,当您寻求帮助时,说“当我尝试运行该功能时我无法获得所需的结果”之类的话是完全没用的。举个例子:这是我要验证的地址,它应该是有效的,但我得到了这个结果。或者,这个地址应该被拒绝,但我看到的结果是“有效”。或类似的事情。 “我的车坏了,怎么了?”在车库里的机会很小。它在在线汽车帮助论坛中没有机会。
标签: oracle function email plsql