错误信息:
ORA-01422: 实际返回的行数超出请求的行数
解析:
将返回值为结果集参数定义为oracle游标类型,本例使用SYS_REFCURSOR类型
1.报错存储过程

CREATE OR REPLACE PROCEDURE PRO_QUERY_INFO_ARGS(ERRORMSG  OUT VARCHAR2,
                                                FAILINFO  OUT VARCHAR2,
                                                TABLENAME OUT VARCHAR2) IS
BEGIN
  ERRORMSG := '';
  SELECT FAIL_INFO, TABLE_NAME INTO FAILINFO,TABLENAME FROM F_LOG_INFO;
  COMMIT;
EXCEPTION
  WHEN OTHERS THEN
    ERRORMSG := 'PRO_QUERY_INFO_ARG抛出异常: ' || SQLERRM;
END PRO_QUERY_INFO_ARGS;

2.变更后存储过程

CREATE OR REPLACE PROCEDURE PRO_QUERY_INFO_ARGS2(ERRORMSG OUT VARCHAR2,
                                                 CURINFO  OUT SYS_REFCURSOR) IS
BEGIN
  ERRORMSG := '';
  OPEN CURINFO FOR
    SELECT FAIL_INFO, TABLE_NAME FROM F_LOG_INFO;
  COMMIT;
EXCEPTION
  WHEN OTHERS THEN
    ERRORMSG := 'PRO_QUERY_INFO_ARG2抛出异常: ' || SQLERRM;
END PRO_QUERY_INFO_ARGS2;

3.本例中使用的建表语句

create table F_LOG_INFO
  task_id    NUMBER(16) not null,
  begin_time DATE,
  end_time   DATE,
  flag       VARCHAR2(8),
  fail_info  VARCHAR2(512),
  data_count NUMBER(16),
  table_name VARCHAR2(256)
-- Add comments to the table 
comment on table F_LOG_INFO
  is '任务日志信息';
-- Add comments to the columns 
comment on column F_LOG_INFO.task_id
  is '任务标识';
comment on column F_LOG_INFO.begin_time
  is '记录任务开始时间';
comment on column F_LOG_INFO.end_time
  is '记录任务结束时间';
comment on column F_LOG_INFO.flag
  is '执行标志 0:失败、1:成功';
comment on column F_LOG_INFO.fail_info
  is '记录任务失败信息';
comment on column F_LOG_INFO.data_count
  is '记录数据条数';
comment on column F_LOG_INFO.table_name
  is '本次任务操作表名';
-- Create/Recreate primary, unique and foreign key constraints 
alter table F_LOG_INFO
  add constraint PK_F_LOG_INFO primary key (TASK_ID);

以上,感谢.

首先要知道:select .....into 语句只能够查询一个记录的信息。                    如果没有查到任何数据,会产生NO_DATA_FOUND异常;                    如果查询到多个记录,则会产生TOO_MANY_ROWS异常。在这里很明显 “ ORA - 01422 实际 返回 行数 超出 请求 行数 ”就是第二种情况,查询到多个记录,所以就会报错,如果必须最后... 2. 实际 返回 行数 超出 请求 行数 ORA -06512: 原因:sql语句的条件出错 3.Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Mapper’s namespa... 题目keywordsCounting.cpp Define a function that, given an istream& and a const vector&, produces a map holding each string (keyword) and the numbers of the line on which the string appears. The ... --在验证类型字段中,有这么一段: SELECT mporlv.object_id, mporlv.object_name, mporlv.object_description   FROM wms_objects_rule_lov_v mporlv  WHERE mporlv.use_for_pi 问题:在编写存储过程,执行的时候一直报这个错误, ORA - 01422 ,应该是单行查询 返回 多个行。 解决 方案:首先分析数据,有没有可能出现单行查询 返回 多个行的情况,对比了老半天,怎么看数据都不可能查出多行记录。最后百度了一下,发现可能是自己定义参数名称和表中的字段名称相同导致参数未传进去,进行了全表查询,所以查出了多条记录。最后修改自己定义的参数名称,问题 解决 。 备注:以后遇到这种问题,还是要早点... Cause: The number specified in exact fetch is less than the rows returned.Action: Rewrite the query or change numb... 问:我使用以下 Ora cle过程,根据输入SQL语句的PO ID可以 返回 一行或者更多行。当 返回 多行时,我收到了 ORA - 01422 错误提示。请问我该如何重新编写过程代码,以便一对多地 返回 数据行?我有一个硬编码的PO ID('0700185')以便测试用。过程应该可以 返回 所有单据,有可能是一个也有可能是五个。请您帮助解释一下,因为我不是DBA,对 Ora cle来说我只是新手,但我有意愿学习。谢谢!CRE...