Sql 为什么我不能在函数中选择带is null条件的语句

Sql 为什么我不能在函数中选择带is null条件的语句,sql,oracle,plsql,Sql,Oracle,Plsql,我尝试了以下plsql函数,但不知道它是否工作: function fct_mytable_has_value(p_id IN mytable.Id%Type) return boolean is begin return (select mt.id from mytable mt where mt.id = p_id) IS NULL; end; 有人可以解释为什么这会导致编译错误?也许是一个聪明的解决方案?测试光标是否为空是毫无意义的 可能您正在寻找一个简单的计数。诸如此类: “它不工

我尝试了以下plsql函数,但不知道它是否工作:

function fct_mytable_has_value(p_id IN mytable.Id%Type) return boolean is
begin

return (select mt.id from mytable mt where mt.id = p_id) IS NULL;

end;

有人可以解释为什么这会导致编译错误?也许是一个聪明的解决方案?

测试光标是否为空是毫无意义的

可能您正在寻找一个简单的计数。诸如此类:


“它不工作”编译错误?执行错误?没有产生预期的结果?
为什么这不起作用?
因为它在语义上不正确。声明一个变量,选择该变量,然后执行空检查。请记住,此函数的使用不会超出PL/SQL。简单地说,因为它返回的值是
boolean
数据类型,所以不能在SQL中使用它。@Maheswaran谢谢!
select COUNT(*) into my_int_var  from mytable mt where mt.id = p_id;
return my_int_var;