Oracle函数执行提示“ORA-01422”,“ORA-06512”错误

来源:互联网 发布:马士兵网上商城源码 编辑:程序博客网 时间:2024/05/15 10:36

问题

  今天在进行Oracle视图优化时,创建了一个函数,其函数SQL描述如下:

create or replace function fun_get_usage_name (usage_id VARCHAR2) return varchar2 isusageName VARCHAR2(50);BEGINselect a.usage_name  into usageName  from bd_med_usage a where a.usage_id = usage_id;RETURN usageName;end fun_get_usage_name;

调用该函数时,出现了如下的错误:

ORA-01422:实际返回的行数超出了请求的行数ORA-06512:在"FUN_GET_USAGE_NAME",line6

需要注意的时,bd_med_usageusage_id是主键。
经过一番调试后,发现这个错误出现的原因是因为函数参数的名称与表字段的名称相同,导致参数无法赋值,Where语句无效,进而进行了全表查询。

解决方案

修改函数形参的名称,不要与表字段名称相同。

0 0