我写了一个JOB如下,本来时可以正常运行的,但加了一句(前面加了×××××××××的那句)就马上报错,不能保存了,请告知原因和解决方法!
update RM_BREAKFAST_TAB
set FLAG='1',STOP_FLAG='0'
where END_DATE<sysdate and STOP_FLAG='1';DECLARE CURSOR CUR_BREAKFAST IS
    select to_char(ENT_ROWID) as ENT_ROWID, ENT_NAME
    from RM_BREAKFAST_TAB
    where to_char(sysdate,'D') not like '7' 
    and to_char(sysdate,'D') not like '1'
    and FLAG='1';
    
BEGIN
   FOR breakfast IN CUR_BREAKFAST LOOP
       delete RM_BREAKFAST where ENT_ROWID=breakfast.ENT_ROWID and trunc(CREATE_DATE)=trunc(sysdate);
 ×××××××××delete RM_BREAKFAST where ENT_ROWID=breakfast.ENT_ROWID and trunc(CREATE_DATE)=trunc(sysdate);
       update OA_KEYS_TAB
       set KEYMAXID=KEYMAXID+1
       where ROW_ID='190';
       insert into RM_BREAKFAST(ROW_ID)
          select to_char(KEYMAXID+to_number(to_char(sysdate,'YYYYMM'))*10000000000)
          from OA_KEYS_TAB 
          where ROW_ID='190';
   if to_number(to_char(sysdate,'D'))=6 then
         update RM_BREAKFAST
         set ENT_ROWID=breakfast.ENT_ROWID,
           ENT_NAME=breakfast.ENT_NAME,
           CREATE_DATE=sysdate+3,
           ENT_REPL_NAME=breakfast.ENT_NAME
         where ROW_ID=(select MAX(ROW_ID) from RM_BREAKFAST);
   ELSE 
         update RM_BREAKFAST
         set ENT_ROWID=breakfast.ENT_ROWID,
           ENT_NAME=breakfast.ENT_NAME,
           CREATE_DATE=sysdate+1,
           ENT_REPL_NAME=breakfast.ENT_NAME
         where ROW_ID=(select MAX(ROW_ID) from RM_BREAKFAST);
   end if;  
    END LOOP;
END;

解决方案 »

  1.   

    ORA-01480 trailing null missing from STR bind value Cause: A bind variable specified as type SQLT_STR is not terminated with an ASCII NULL (0) character. Action: Check maximum lengths and contents of string bind variables. 
      

  2.   

    在http://www.oradb.net查出来的,我都查过了,就是不知道怎么改和什么原因引起,为什么加了一句马上就不行!
      

  3.   

    最好是将表结构贴出来。我试了一下该语句,没什么问题。关键看CREATE_DATE是什么类型的字段。
      

  4.   

    CREATE TABLE RM_BREAKFAST ( 
      ROW_ID         NUMBER (16)   NOT NULL, 
      ENT_ROWID      NUMBER (16), 
      ENT_NAME       VARCHAR2 (16), 
      CREATE_DATE    DATE, 
      ENT_REPL_NAME  VARCHAR2 (16), 
      ACTIVE_FLAG    INTEGER       DEFAULT 1, 
      UPDATE_DATE    DATE, 
      PRIMARY KEY ( ROW_ID ) ) ; CREATE TABLE RM_BREAKFAST_TAB ( 
      ENT_ROWID    NUMBER (16), 
      ENT_NAME     VARCHAR2 (16), 
      FLAG         VARCHAR2 (1), 
      CREATE_DATE  DATE, 
      START_DATE   DATE, 
      END_DATE     DATE, 
      STOP_FLAG    VARCHAR2 (1)  DEFAULT 0 ) ; CREATE TABLE OA_KEYS_TAB ( 
      ROW_ID     NUMBER (16)   NOT NULL, 
      KEYTABLE   VARCHAR2 (32), 
      KEYCOLUMN  VARCHAR2 (32), 
      KEYMAXID   NUMBER (10), 
      PRIMARY KEY ( ROW_ID ) ) ; 其中OA_KEYS_TAB要插入一条记录,ROW_ID='190',KEYTABLE='RM_BREAKFAST',KEYCOLUMN='ROW_ID',KEYMAXID='0'