sqlBuf := 'SELECT a,b FROM c WHERE calling_nbr in '||tmpAccNbr;
     
      curFlag := DBMS_SQL.OPEN_CURSOR;
      OPEN curLocalDur FOR sqlBuf;
      LOOP
        BEGIN
          FETCH curLocalDur INTO a,b;
          EXIT WHEN curLocalDur%NOTFOUND;
          
          IF b <= 180 THEN
            tmpFee := 2*10;
          ELSE
            tmpFee := 2*10 +floor((b - 180 + 59)/60)*10;
          END IF;    
         EXECUTE IMMEDIATE 'update c set rate=10 where ticket_id=a and duration=b';
            tmpLocalFee := tmpLocalFee + tmpFee;
        END;
      END LOOP;
      DBMS_SQL.CLOSE_CURSOR(curFlag);

解决方案 »

  1.   

    EXECUTE IMMEDIATE 'update c set rate=10 where ticket_id=a and duration=b';
    a和b为变量
    EXECUTE IMMEDIATE 'update c set rate=10 where ticket_id='||a||' and duration='||b;
      

  2.   

    好象可以直接写
    update c set rate=10 where ticket_id=a and duration=b;
      

  3.   

    或者:EXECUTE IMMEDIATE 'update c set rate=10 where ticket_id=:1 and duration=:2'
       USING a,b;