create or replace procedure P_Test is
  v_col1  number;
  r_emp   SO_CHARGE@db_dqyy%rowtype;
  v_newid varchar2(10);
  v_charge_id varchar2(10);
  cursor cur is
    select * from SO_CHARGE@db_dqyy;
begin  open cur;
  loop
    fetch cur
      into r_emp;
      
  exit when cur%notfound;
  
    if length(r_emp.so_charge_type_id) = 5 then
      begin
        select b.newid          into v_newid
          from query_charge_to_boss b
       where b.so_charge_type_id = r_emp.so_charge_type_id;
         end;
    end if;
  
  if length(r_emp.so_charge_type_id) = 3 then
  begin
          select c.charge_id
          into v_charge_id
          from so_charge_cat_id_to_boss c
       where c.charge_id = r_emp.so_charge_type_id;
  end;
  end if;
  dbms_output.put_line(v_newid||'---'||v_charge_id);
  end loop;end P_Test;
两个if体中查询的 charge_id  与 newid 我想让它们在一排打印出来。
可惜的是 两个查询结果都大于1行,运行就会在    select b.newid  这里报错。可能就是因为返回结果太多造成的。麻烦各位大侠给解决下最后结果能让两个字段并列打印出。 谢谢

解决方案 »

  1.   

    现在无法解决的是
     select b.newid           into v_newid 
              from query_charge_to_boss b 
          where b.so_charge_type_id = r_emp.so_charge_type_id; 这个无法通过,提示  no data found
      

  2.   

    两个查询结果都大于1行,运行就会在    select b.newid  这里报错
    你想取一条结果呢,还是所有的都要?
    如果是所有的都要,用游标,多条的两个结果如何打印
      

  3.   

    这样写的话必须保证b.newid不为空
      

  4.   

    两个查询结果都会大于一行,那你要将他们并排显示出现,要怎么关联?
    比如fetch后,两个查询一个返回2条记录,一个返回3条记录,你要这么处理
    大致可以在这个游标循环里面再加一个游标循环。剩下的就是2个查询的对应问题
      

  5.   

    a:10条记录 b:5条记录 dbms_output.put_line(a || b)就是50条吗?