PL / SQL函数没有返回任何值

时间:2013-05-09 18:31:36

标签: sql oracle plsql

我收到ORA-06503错误,即“没有值返回的函数”。我想知道当函数内部查询找到NULL值并且函数试图返回检索到的NULL值时是否发生此错误? 这是功能大纲 -

FUNCTION getEmailAddress (user IN VARCHAR2) RETURN VARCHAR2 IS
v_email             xxxxTable.email%TYPE;
BEGIN
 SELECT email
 INTO   v_email
 FROM   xxxxTable
 WHERE  user_id = user;
 RETURN v_email;
EXCEPTION
 WHEN OTHERS
 THEN
  RETURN constantValue;
END getEmailAddress;

此处的任何澄清都会有所帮助

由于

3 个答案:

答案 0 :(得分:3)

返回null仍会计为返回值。但是,选择无行会引发错误。可能你正在使用EXCEPTION WHEN OTHERS条款来捕获它,这是一个不好习惯。

答案 1 :(得分:2)

这意味着你的函数根本没有返回任何内容 - 不是null,但是有一些分支在没有调用return的情况下退出。

一个可能的罪魁祸首是一个exception块,它可以捕获一些东西 - 很可能是when others - 然后不会(重新)提升并且不会自己return。如果实际发生异常,则会跳过returnbegin之间的exception

当然猜测;在问题中显示功能代码将澄清问题。

答案 2 :(得分:1)

根据this"您试图调用PLSQL函数,但函数缺少RETURN语句。"

建议的解决方案:
"尝试重写函数以包含RETURN语句。或者,如果您不想返回值,请将您的函数重写为一个过程。"

此错误,因为返回值为NULL

发布一些代码可以帮助我们更轻松地发现确切问题(而不是对此进行最佳猜测)。