我想要一个查询来查找数据库中是否存在唯一记录。例如:
SELECT externaleventid
FROM event
WHERE externaleventid = "XYZ".
如果"XYZ"不存在,则应返回false,如果存在,则返回true。我使用的是sql developer和eclipse。我试过使用
if exists (select externaleventid from event where externaleventid='XYZ')
select 'True'
else
select 'False'
return
但它给了我一个语法错误"和/或",这是sql开发人员所期望的。
目前尚不清楚您是在请求返回字符串'True'
或'False'
的SQL语句,还是在请求返回相同字符串的PL/SQL函数,还是在要求返回实际布尔值的PL/SSQL函数。在12.1之前的SQL中不存在布尔数据类型,所以我猜您不是在要求返回布尔值的SQL语句。
如果你想要一个SQL语句,你可以做一些类似的事情
SELECT (CASE WHEN cnt >= 1
THEN 'True'
ELSE 'False'
END) result_str
FROM( SELECT COUNT(*) cnt
FROM event
WHERE externaleventid = 'XYZ' )
如果你想要一个PL/SQL函数,你可能会做一些类似的事情
CREATE OR REPLACE FUNCTION does_exist(
p_externaleventid IN event.externaleventid%type
)
RETURN VARCHAR2
IS
l_cnt PLS_INTEGER;
BEGIN
SELECT COUNT(*)
INTO l_cnt
FROM event
WHERE externaleventid = p_externaleventid;
IF( l_cnt > 0 )
THEN
RETURN 'True';
ELSE
RETURN 'False';
END IF;
END;