Oracle 为什么二进制函数在SELECT语句中不起作用
我对在PLSQL中使用二进制函数有点困惑,我不确定这个函数是否存在于PLSQL中,因为我是Oracle 为什么二进制函数在SELECT语句中不起作用,oracle,plsql,Oracle,Plsql,我对在PLSQL中使用二进制函数有点困惑,我不确定这个函数是否存在于PLSQL中,因为我是PLSQL编程的新手 我想返回0或1,这取决于是否已获取项目编号 SELECT COUNT(*) AS COUNT FROM projects WHERE BINARY CustomName = p_number; 这是我的函数 FUNCTION CHECK_PROJECT_NUMBER(p_number NUMBER) RETURN SYS_REFCURSOR IS rc SYS_REFCUR
PLSQL编程的新手
我想返回0
或1
,这取决于是否已获取项目编号
SELECT COUNT(*) AS COUNT FROM projects WHERE BINARY CustomName = p_number;
这是我的函数
FUNCTION CHECK_PROJECT_NUMBER(p_number NUMBER)
RETURN SYS_REFCURSOR IS
rc SYS_REFCURSOR;
/*CHECK IF PROJECT NUMBER IS TAKEN*/
BEGIN
OPEN rc FOR
SELECT COUNT(*) AS COUNT FROM projects WHERE BINARY CustomName = p_number;
RETURN rc;
END CHECK_PROJECT_NUMBER;
我得到的错误如下
Error(869,56): PL/SQL: ORA-00920: invalid relational operator
我在哪里犯了错误?我在这里错过了什么?我不认为有这样的函数(
BINARY
)-它是一种数据类型。
还有一个boolean
数据类型,但它不在sql
中使用(仅在plsql
中)
此外,我认为此函数不需要游标
,因此
我会这样重写它:
FUNCTION CHECK_PROJECT_NUMBER(p_number NUMBER)
RETURN NUMBER IS
cnt number:=0;
BEGIN
SELECT COUNT(*) into cnt FROM projects WHERE CustomName =
p_number;
if cnt>0 then
cnt:=1;
end if;
RETURN cnt;
END CHECK_PROJECT_NUMBER;
如果找到项目编号,此函数将返回
1
,否则返回0
。您在SQL手册中找到任何此类函数了吗?仍然没有找到任何解决方案,但这回答了问题,不是吗?您使用的关键字BINARY
不代表任何提供的函数,您可以通过查看SQL手册自行检查。这就是你出错的原因。