出现这种错误的原因是查询出来的内容长度超出接受变量的长度
比如:我们定义的l_name varchar2(30);
select name into l_name from student_t;
而我们查出来的name长度超出30,则报错创建ORA-01422的原因:精确提取返回的请求行数超过了请求的行数
ORA
-
01422
: exact fetch returns more than requested number of rows Cause: The number specified in exact fetch is less than the rows returned.Action: Rewrite the query or change number of rows r
在
ORA
CLE的存储过程 或是
触发器
中使用类似
select t.ajay into aytemp from t_xyr_collect t where t.c_ahpx like '%'||xyrbh||'%' ;
的语句时,可能会出现
ORA
-
01422
: 实际
返回
的
行数
超出
请求
的
行数
的错误
解决办法:在条件后加上 and rownum=1
selec...
首先要知道:select .....into 语句只能够查询一个记录的信息。 如果没有查到任何数据,会产生NO_DATA_FOUND异常; 如果查询到多个记录,则会产生TOO_MANY_ROWS异常。在这里很明显 “
ORA
-
01422
实际
返回
的
行数
超出
请求
的
行数
”就是第二种情况,查询到多个记录,所以就会报错,如果必须最后...
问:我使用以下
Ora
cle过程,根据输入SQL语句的PO ID可以
返回
一行或者更多行。当
返回
多行时,我收到了
ORA
-
01422
错误提示。请问我该如何重新编写过程代码,以便一对多地
返回
数据行?我有一个硬编码的PO ID('0700185')以便测试用。过程应该可以
返回
所有单据,有可能是一个也有可能是五个。请您帮助解释一下,因为我不是DBA,对
Ora
cle来说我只是新手,但我有意愿学习。谢谢!CRE...
问题:在编写存储过程,执行的时候一直报这个错误,
ORA
-
01422
,应该是单行查询
返回
多个行。
解决方案:首先分析数据,有没有可能出现单行查询
返回
多个行的情况,对比了老半天,怎么看数据都不可能查出多行记录。最后百度了一下,发现可能是自己定义参数名称和表中的字段名称相同导致参数未传进去,进行了全表查询,所以查出了多条记录。最后修改自己定义的参数名称,问题解决。
备注:以后遇到这种问题,还是要早点...