存储过程如下:
create or replace procedure sp_harnessboard_syn
is
  cursor c1 is select substr(a.vehicleno,2) as vehicleno,b.code ,a.kindid
  from epharnessboard a,epkind b where a.kindid = b.oid;
 
  v_vehicleno varchar2(15);
  v_kindid number;
  v_code varchar2(2);
  v_clpp1 varchar2(32);
  v_csys varchar2(5);
  v_syr varchar2(128);
  v_zsxxdz varchar2(128);
  v_lxdh varchar2(20);
  v_clxh varchar2(32);
  v_sfzmhm varchar2(18);
  
begin 
  for c_1 in c1 loop        
     select  clpp1,csys,syr,zsxxdz,lxdh,clxh,sfzmhm
     into v_clpp1,v_csys,v_syr,v_szxxdz,v_lxdh,v_clxh,v_sfzmhm
     from [email protected] 
     where hphm = c_1.vehicleno and hpzl = c_l.code;
     
     update epharnessboard set clpp1 = v_clpp1,
     BODYWORKCOLORID = (select oid from epbodyworkcolor where code = v_csys),
     OWNER = v_syr,
     ADDRESS = v_szxxdz,
     TEL = v_lxdh,
     MANUTYPE = v_clxh,
     DRIVINGLICENCE = v_sfzmhm
     where vehicleno = v_vehicleno and kindid = c_1.kindid;
     
     commit;
   end loop; 
  exception 
   when others then
   commit;
end;Warning: Procedure created with compilation errorsPL/SQL
执行其中的
select  clpp1,csys,syr,zsxxdz,lxdh,clxh,sfzmhm
     into v_clpp1,v_csys,v_syr,v_szxxdz,v_lxdh,v_clxh,v_sfzmhm
     from [email protected] 
句,可以查询得出数据来。
存储过程调试中发现好像存储过程中使用此语句存在问题?为什么 ?????
请教高人。 先谢谢了。

解决方案 »

  1.   

    你的SUBSTR()的语法错了。
    SUBSTR('Message',1,4)而不是substr(a.vehicleno,2)
      

  2.   

    楼上的,substr(a.vehicleno,2)没错
    截取a.vehicleno,去掉第1位
      

  3.   

    楼主在pl/sql中执行的是
    select  clpp1,csys,syr,zsxxdz,lxdh,clxh,sfzmhm
         from [email protected] 
    还是
    select  clpp1,csys,syr,zsxxdz,lxdh,clxh,sfzmhm
         into v_clpp1,v_csys,v_syr,v_szxxdz,v_lxdh,v_clxh,v_sfzmhm
         from [email protected] ?如果执行的是select  clpp1,csys,syr,zsxxdz,lxdh,clxh,sfzmhm
         from [email protected] 
    有可能是数据类型有问题
      

  4.   

    你没有open cursor就使用,这个时候c_1.vehicleno是null所以取不出东西的
      

  5.   

    如果是   select  clpp1,csys,syr,zsxxdz,lxdh,clxh,sfzmhm
         into v_clpp1,v_csys,v_syr,v_szxxdz,v_lxdh,v_clxh,v_sfzmhm
         from [email protected] 
         where hphm = c_1.vehicleno and hpzl = c_l.code;
    有问题的话,看下ora错误码是什么,可能游标的一个返回值作为查询条件时返回了多个结果
      

  6.   

    加入ORACLE群吧!群号是:19312711
      

  7.   

    TO MURFY_MF() 群已经满员了。