WoodyOilove

与你分享点滴成长

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

问题

  今天在进行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语句无效,进而进行了全表查询。

解决方案

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

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013180299/article/details/54407765
文章标签: oracle 函数
个人分类: 数据库
想对作者说点什么? 我来说一句

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

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭