为什么BINARY函数在SELECT语句中不起作用

问题描述

在PLsql中使用BINARY函数时,我有些困惑,由于我是PLsql Programming的新手,因此我不确定该函数是否甚至存在于PLsql中。 我想返回01,具体取决于项目编号是否已被接受

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中使用)。

此外,我认为此功能不需要cursor,所以

我会这样重写它:

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