检查记录是否存在,是否添加1(内部程序)

时间:2015-05-09 17:47:21

标签: plsql oracle-sqldeveloper

我正在尝试检查电子邮件地址是否已经存在,如果存在则添加1(如果存在电子邮件+ 1则为1,依此类推)。但到目前为止,我甚至无法弄清楚如何在程序中检查它是否存在。

if exists (select 1 from table where email='something') then ...

返回错误("函数或伪列' EXISTS'只能在SQL语句中使用)"。尝试了其他的东西,但那些可能不值得一提。

在我有了这个之后,我计划制作一个while循环,根据需要添加1。

1 个答案:

答案 0 :(得分:1)

您可以在变量(已声明的变量)中选择匹配记录的数量,然后检查该变量的值:

select count(*) into l_count
from my_table
where email = 'something';
if l_count > 0 then
  -- record exists
  ...
else
  -- record does not exist
  ...
end if;

select ... into总是必须返回一个记录,并且使用count聚合函数意味着即使存在多个匹配记录也会发生这种情况。

希望能够涵盖您检查存在的具体问题。至于你的基本目标,听起来你正试图通过增加后缀来找到一个未使用的值。如果是这样,this similar question可能有所帮助。这是寻找用户名而不是电子邮件,但原则是相同的。

正如评论中所指出的,同时调用您的过程可能仍会尝试使用相同的后缀值;所以你仍然需要一个唯一的约束,并处理那个场景中违反的约束。我认为这超出了你在这里的要求。