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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013180299/article/details/54407765

问题

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

create or replace function fun_get_usage_name (usage_id VARCHAR2) return varchar2 is
usageName VARCHAR2(50);
BEGIN
select 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语句无效,进而进行了全表查询。

解决方案

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

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页