大虾们好! 写存储过程中遇到一个问题 请大家帮帮看看一下  提示interval 需要声明 怎么解决CREATE OR REPLACE PROCEDURE pr_temp
IS 
  delete from tb_sms_unsend_temp;
  COMMIT;
  INSERT INTO tb_sms_unsend_temp(iid,phone,area_id,service_code,status_id,delivery_timestamp,str_day)
  SELECT ('UN'||to_char(sysdate,'yyyymmddhh24miss')||ROWNUM),phone,fn_get_areaidbyphone(phone),service_code,
  status_id,delivery_timestamp,str_day FROM tb_sms_detail WHERE 
  to_char(SYSDATE - interval '1' DAY,'yyyymmdd')<=to_char(start_timestamp,'yyyymmdd') AND 
  status_id<>'1000';
  COMMIT;
END pr_temporacle提示错误 :
Error: PLS-00201: 必须说明标识符 'NUMTODSINTERVAL'
Line: 15
Text: to_char(SYSDATE - INTERVAL '1' DAY,'yyyymmdd')<=to_char(start_timestamp,'yyyymmdd') AND

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE pr_temp
    IS  
    interval date:=0;
      delete from tb_sms_unsend_temp;
      COMMIT;
      INSERT INTO tb_sms_unsend_temp(iid,phone,area_id,service_code,status_id,delivery_timestamp,str_day)
      SELECT ('UN'||to_char(sysdate,'yyyymmddhh24miss')||ROWNUM),phone,fn_get_areaidbyphone(phone),service_code,
      status_id,delivery_timestamp,str_day FROM tb_sms_detail WHERE  
      to_char(SYSDATE - interval '1' DAY,'yyyymmdd')<=to_char(start_timestamp,'yyyymmdd') AND  
      status_id<>'1000';
      COMMIT;
    END pr_temp
      

  2.   

    一个参考例子cursor cur_order is
        select *
          from scm_order t
         where t.ordertype=1 and t.order_status=2 and t.checkstatus=1
           and (t.checktm + numtodsinterval(v_time, 'minute')) < sysdate;
      

  3.   

    interval  是oracle关键字吗
    不是如果是变量,要定义和声明吗 基本语法