BEGIN
   UPDATE RPTTABLE SET GROUPCODE='OBD' WHERE REPORTID='TST01';
   --COMMIT;
   IF SQL %NOTFOUND THEN
      DBMS_OUTPUT.PUT_LINE('No Recorde');
   ELSE
      DBMS_OUTPUT.PUT_LINE('Ok Recorde');
   END IF;     
END;结果是不管数据库有没有UPDATE,都是输出 No Recorde??不知为什么。。

解决方案 »

  1.   

    在PL/SQL不用commit;以下是一个例子:BEGIN
      UPDATE rooms
        SET number_seats = 100
        WHERE room_id = 99980;
      -- If the previous UPDATE statement didn't match any rows, 
      -- insert a new row into the rooms table.
      IF SQL%NOTFOUND THEN
        INSERT INTO rooms (room_id, number_seats)
          VALUES (99980, 100);
      END IF;
    END;
    /BEGIN
      UPDATE rooms
        SET number_seats = 100
        WHERE room_id = 99980;
      -- If the previous UPDATE statement didn't match any rows, 
      -- insert a new row into the rooms table.
      IF SQL%ROWCOUNT = 0 THEN
        INSERT INTO rooms (room_id, number_seats)
          VALUES (99980, 100);
      END IF;
    END;
    /
      

  2.   

    我是在sqlplus Worksheet里写的,
    可是我如果去掉了commit,即使显示Ok Recorde,
    我查看数据库里,实际是并没发生改变的啊.请再指教
      

  3.   

    BEGIN
       UPDATE RPTTABLE SET GROUPCODE='OBD' WHERE REPORTID='TST01';
       IF SQL %NOTFOUND THEN
          DBMS_OUTPUT.PUT_LINE('No Recorde');
       ELSE
          DBMS_OUTPUT.PUT_LINE('Ok Recorde');
          COMMIT;
       END IF;     
    END;
      

  4.   

    看这样有数据再说
    select * from RPTTABLE WHERE REPORTID='TST01'
      

  5.   

    select * from RPTTABLE WHERE REPORTID='TST01',肯定有数据的。要在语句块外提交么?
      

  6.   

    不用commit,但也不知道发生什么问题, 奇怪
      

  7.   

    To  niusr(阿荣) 
      你的不用commit么??数据库发生真实改变??