V_TEMP是varchar2型的,而游标中取的值是NUMBER型的,所以出现不匹配。

解决方案 »

  1.   

    加了也不行 to_char(CEIL(TO_NUMBER(TO_CHAR(act_insertdate, 'DDD')) / 7)
    )
    一运行到 FETCH MYCUR 就出现出错
      

  2.   

    你的数据类型不匹配,V_TEMP是字符型的,而你的查询结果是数字型的,所以会报错,修改其中之一就可以了
      

  3.   

    TYPE V_CURSOR IS REF CURSOR;
      defCursor   V_CURSOR;
      V_TEMP  INTEGER:=0;<<================
      

  4.   

    to  liuyi8903(西西):
      还是报错 出现错误文字与格式字符串不匹配
      

  5.   

    把v_temp 改为integer类型或者number类型
    而且你where条件后面的日期也不对.我记得在存储过程里面给你传的参数V_BDATE和V_EDATE 是date类型的.因此to_char(t2ashipmentno_kpi.act_insertdate,'yyyy-mm-dd')就不需要了.
    如果你的t2ashipmentno_kpi.act_insertdate是date类型的话,就直接写成where t2ashipmentno_kpi.act_insertdate BETWEEN.....
      

  6.   

    把v_temp 改为integer类型或者number类型
    而且你where条件后面的日期也不对.我记得在存储过程里面给你传的参数V_BDATE和V_EDATE 是date类型的.因此to_char(t2ashipmentno_kpi.act_insertdate,'yyyy-mm-dd')就不需要了.
    如果你的t2ashipmentno_kpi.act_insertdate是date类型的话,就直接写成where t2ashipmentno_kpi.act_insertdate BETWEEN.....
      

  7.   

    TYPE V_CURSOR IS REF CURSOR;
      MYCUR   V_CURSOR;
      V_TEMP  VARCHAR2(20);
      --V_DateField  Varchar2(30);--日期变量  根据选择项不同选择日期字段
     -- V_ToDate date;
      V_UNION VARCHAR2(20);
      V_TEMP2 VARCHAR2(1000);
      V_TEMP3 VARCHAR2(1000);
      V_TEMP4 VARCHAR2(1000);
     
    BEGIN
      V_SQL   := ' SELECT 0 sign,''周'' ';
      V_TEMP2 := ' SELECT 1 sign,''按时到达'' ';
      V_TEMP3 := ' SELECT 2 sign,''延时到达'' ';
      V_TEMP4 := ' SELECT 3 sign,''总数'' ';
      V_UNION := ' union ';
    IF V_TYPE = 'C' THEN
        OPEN MYCUR FOR 
          --SELECT DISTINCT CEIL(TO_NUMBER(TO_CHAR(act_insertdate, 'DDD')) / 7)
          --to_char(to_date(act_insertdate,'dd-mon-yy'),'IW') 
            --
            SELECT  DISTINCT to_char(CEIL(TO_NUMBER(TO_CHAR(act_insertdate, 'DDD')) / 7)) 
            FROM t2ashipmentno_kpi WHERE to_char(t2ashipmentno_kpi.act_insertdate,'yyyy-mm-dd') between V_BDATE AND V_EDATE;
          
        LOOP
          FETCH MYCUR
            INTO V_TEMP;
          EXIT WHEN MYCUR%NOTFOUND;
          V_SQL   := V_SQL || ' ,' || V_TEMP;
          V_TEMP2 := V_TEMP2 || ' ,f_test(' || V_TEMP || ',1)';
          V_TEMP3 := V_TEMP3 || ' ,f_test(' || V_TEMP || ',2)';
          V_TEMP4 := V_TEMP4 || ' ,f_test(' || V_TEMP || ',3)';
        END LOOP;
      

  8.   

    日期字段             说明                              选择条件                   格式
        'ACT_InsertDate   PACKINGLIST收到时间                  Call Off Date        格式var 21-9月 -04