我收到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;
此处的任何澄清都会有所帮助
由于
答案 0 :(得分:3)
返回null仍会计为返回值。但是,选择无行会引发错误。可能你正在使用EXCEPTION WHEN OTHERS条款来捕获它,这是一个不好习惯。
答案 1 :(得分:2)
这意味着你的函数根本没有返回任何内容 - 不是null
,但是有一些分支在没有调用return
的情况下退出。
一个可能的罪魁祸首是一个exception
块,它可以捕获一些东西 - 很可能是when others
- 然后不会(重新)提升并且不会自己return
。如果实际发生异常,则会跳过return
和begin
之间的exception
。
当然猜测;在问题中显示功能代码将澄清问题。
答案 2 :(得分:1)
根据this"您试图调用PLSQL函数,但函数缺少RETURN语句。"
建议的解决方案:
"尝试重写函数以包含RETURN语句。或者,如果您不想返回值,请将您的函数重写为一个过程。"
此错误不,因为返回值为NULL
。
发布一些代码可以帮助我们更轻松地发现确切问题(而不是对此进行最佳猜测)。