我想检查作为输入提供的电子邮件地址是否有效。我创建了以下功能。该功能已成功创建,但是当我尝试运行该功能时,我无法获得所需的输出。
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;
答案 0 :(得分:3)
您不能将布尔值作为参数传递给dbms_output.put_line
。当我运行您的代码时,我收到此错误:
ORA-06550:PLS-00306:调用'PUT_LINE'时参数的数量或类型错误
实用的解决方案是让您的函数返回smallint
(0或1),这也可以用来执行您的电子邮件地址验证。
然后,您可以更轻松地测试代码,如下所示:
select email_validate('abcd@gmail.com') from dual;
如果您希望将结果显示为“false”或“true”:
select case when email_validate('abcd@gmail.com') > 0
then 'true'
else 'false'
end
from dual;
如果你留在PL / SQL中,你也可以使用boolean
类型(跳过> 0
然后)。但Oracle SQL无法处理它。