我有返回关联数组的 PLSQL 函数。这是我的代码
TYPE ASSOC_ARR IS TABLE OF NUMBER INDEX BY VARCHAR(20)
FUNCTION GET_SAMPLE_MAP(ID IN NUMBER) RETURN ASSOC_ARR IS
sample_map ASSOC_ARR;
BEGIN
FOR rec IN (SELECT LOC.STATE, LOC.POPULATION FROM LOCATIONS LOC) LOOP
sample_map(rec.STATE) := rec.POPULATION;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN sample_map;
WHEN OTHERS THEN
RETURN sample_map;
END;
当我从一个过程调用这个函数并且 SQL 查询没有返回任何数据时,会捕获返回 sample_map 的 NO_DATA_FOUND 异常。但我得到一个错误说
ORA-06503:PL/SQL:函数返回无值 *原因:对 PL/SQL 函数的调用已完成,但未执行 RETURN 语句。*行动:重写 PL/SQL 函数,确保它总是返回一个正确类型的值。
在这种情况下我应该从这个函数返回什么以避免这个错误?