问题描述
在PLsql中使用BINARY函数时,我有些困惑,由于我是PLsql Programming
的新手,因此我不确定该函数是否甚至存在于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
中使用)。
此外,我认为此功能不需要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
。