PcCur_rec PcCur%ROWTYPE;是什么意思,是定义游标行类型吗,那有这种赋值.

解决方案 »

  1.   

    这么复杂sql就更加要写的整齐一点,头晕~~~~~~:(
      

  2.   

    修改如下:create or replace procedure pc_117proc(
    PcNo in varchar2,
    UpdateDate in varchar2
    )
    as
    CURSOR PcCur(PcNo varchar2,UpdateDate varchar2) IS SELECT * FROM pc_117 where PC_NO=PCNO AND STOREDATE=UPDATEDATE;
    BEGIN
    for v_sor in PcCur(PcNo,UpdateDate) loop;
    UPDATE pc_r_117 set
    PC_ID=v_sor.PC_ID         ,PC_NO=v_sor.PC_NO          ,
    .......
    PSY_EXP=v_sor.PSY_EXP where PC_NO=PCNO;
    end loop;
    END pppc_117proc;提醒不要关闲游标了,已隐式关闲了,把上更新的值改为v_sor为前缀就可以了。
      

  3.   

    SQL,没什么,只是更新各个字段
      

  4.   

    仔细看看你的代码,你定义的是PcCur_rec PcCur%ROWTYPE;
    而用到的是pcrec呀?写错了!
    但也应该报pls-00201呀?
      

  5.   

    beckhambobo:
    我只更新一条数据,不用LOOP吧
      

  6.   

    Compilation errors for PROCEDURE RENEW.PC_117PROCError: PLS-00103: 出现符号 "PCCUR"在需要下列之一时:
           :=.(@%;
           符号 ":=" 被替换为 "PCCUR" 后继续。
    Line: 9
    Text: PcCur_rec PcCur%ROWTYPE;
    是什么意思,以上几位提的,我试了,也没成。
      

  7.   

    不用for也可以,但要定义一个行类型
    as
    CURSOR PcCur(PcNo varchar2,UpdateDate varchar2) IS SELECT * FROM pc_117 where PC_NO=PCNO AND STOREDATE=UPDATEDATE;
    v_pc_117 pc_117%rowtype;
    BEGIN
    OPEN PcCur(PcNo,UpdateDate);
    FETCH PcCur INTO v_pc_117;
    UPDATE pc_r_117 set
    PC_ID=v_pc_117.PC_ID         ,PC_NO=v_pc_117.PC_NO          , 
    .....
    PSY_EXP=v_pc_117.PSY_EXP where PC_NO=PCNO;
    close PcCur;
    END pppc_117proc;
    把前缀改为v_pc_117.以后最好自已先动脑,动动手,不要有事没事往贴里发!