如何在变量

时间:2016-03-11 11:48:10

标签: sql plsql oracle10g

如果select语句成功执行,则返回1,否则为0 我不希望将该返回值存储在变量中,以便我可以在更进一步的sql中使用该变量

 set serveroutput on  
declare  
a number;  
begin  
  a:=select instr('&email','@') as email_in from dual;  
  if(a)  
  then  
    dbms_output.put_line('Valid Email');  
  else  
    dbms_output.put_line('Please Enter a valid Email');  
  end if;  
end;  

这里我正在尝试的是,如果用户输入的电子邮件包含@然后选择查询成功执行并返回@在该字符串中的位置,否则它将给出0 但它给了我一个错误,任何人都可以帮助我... 谢谢你提前..

2 个答案:

答案 0 :(得分:1)

我想你想表达的是:

select (case when instr('&email', '@') > 0 then 1 else 0 end)
into a
from dual;  
if (a = 1) then  
  dbms_output.put_line('Valid Email');  
else  
  dbms_output.put_line('Please Enter a valid Email');  
end if;  

为此目的,您不需要select,但我将其留在了.I 或者,只需:

if ('&email' like '%@%') then  
  dbms_output.put_line('Valid Email');  
else  
  dbms_output.put_line('Please Enter a valid Email');  
end if;  

注意:电子邮件的有效性检查应该比签名更多​​。

答案 1 :(得分:0)

只需编写功能即可验证电子邮件 如果没有@,那么它将返回0,如果它在那里则返回@。

create or replace function check_email(ip_emailid varchar2)
  return number
is
begin
 return instr(ip_emailid,'@');
end;