create or replace procedure PRO_DRAW  is
    v_DrawCount VARCHAR(100);
BEGIN  BEGIN
    SELECT COUNT(*) INTO v_DrawCount  FROM DRAW_TRANS  T WHERE T.ACTIVITY = 0; 
       INSERT INTO DRAW_CURRENT
            (SERIAL_ID,
             ACCOUNT_NAME,
             AMOUNT,
             CREATE_DATE,
             RATE_ID,
             PLACE_ID,
             BANK_TYPE,
             BANK_ACCOUNT,
             BANK_ACCOUNTNAME,
             DRAW_TYPE,
             STATE
            )
         SELECT 
             X.SERIAL_ID, 
             X.OBJECT_ACCOUNT,
             X.AMOUNT,
             X.CREATE_DATE,
             X.RATE_ID,
             X.PLACE_ID,
             X.BANK_TYPE,
             X.BANK_ACCOUNT,
             X.BANK_ACCOUNTNAME,
             X.DRAW_TYPE,
             X.ACTIVITY
         FROM DRAW_TRANS X WHERE X.DRAW_TYPE = 8 AND X.ACTIVITY = 0; 
   EXCEPTION
      WHEN OTHERS THEN  
      ROLLBACK;
  END
  COMMIT; 
END PRO_DRAW;

解决方案 »

  1.   

    先运行下面的sql,看是否有记录
    SELECT  
      X.SERIAL_ID,  
      X.OBJECT_ACCOUNT,
      X.AMOUNT,
      X.CREATE_DATE,
      X.RATE_ID,
      X.PLACE_ID,
      X.BANK_TYPE,
      X.BANK_ACCOUNT,
      X.BANK_ACCOUNTNAME,
      X.DRAW_TYPE,
      X.ACTIVITY
      FROM DRAW_TRANS X WHERE X.DRAW_TYPE = 8 AND X.ACTIVITY = 0;  
      

  2.   

    那再运行INSERT INTO DRAW_CURRENT
      (SERIAL_ID,
      ACCOUNT_NAME,
      AMOUNT,
      CREATE_DATE,
      RATE_ID,
      PLACE_ID,
      BANK_TYPE,
      BANK_ACCOUNT,
      BANK_ACCOUNTNAME,
      DRAW_TYPE,
      STATE
      )
      SELECT  
      X.SERIAL_ID,  
      X.OBJECT_ACCOUNT,
      X.AMOUNT,
      X.CREATE_DATE,
      X.RATE_ID,
      X.PLACE_ID,
      X.BANK_TYPE,
      X.BANK_ACCOUNT,
      X.BANK_ACCOUNTNAME,
      X.DRAW_TYPE,
      X.ACTIVITY
      FROM DRAW_TRANS X WHERE X.DRAW_TYPE = 8 AND X.ACTIVITY = 0;
      

  3.   


    SELECT COUNT(*) INTO v_DrawCount FROM DRAW_TRANS T WHERE T.ACTIVITY = 0;这句在你这个procedure中有啥用?
      

  4.   

    运行这段SQL后表中有记录的,但是运行存储过程就不行了