Oracle 为什么二进制函数在SELECT语句中不起作用

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中使用二进制函数有点困惑,我不确定这个函数是否存在于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_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手册自行检查。这就是你出错的原因。