0

我收到 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;

这里的任何澄清都会有所帮助

谢谢

4

3 回答 3

3

返回 null 仍然算作返回值。但是,不选择任何行会引发错误。可能您使用 EXCEPTION WHEN OTHERS 子句将其困住,这是一个不好的习惯。

于 2013-05-09T18:36:53.347 回答
2

这意味着您的函数根本没有返回任何东西 - 不是null,但是有一些分支根本没有调用就退出return了。

一个可能的罪魁祸首是一个exception块,它抓住了一些东西 - 很可能when others- 然后不(重新)提升并且它本身也没有return。如果实际引发异常,将跳过andreturn之间的A。beginexception

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

于 2013-05-09T18:38:13.607 回答
1

根据“您尝试调用 PLSQL 函数,但该函数缺少 RETURN 语句。”

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

不会引发此错误,因为返回值为NULL.

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

于 2013-05-09T18:39:32.170 回答