“ ORA-01858:在期望数字的地方找到了非数字字符ORA-06512:

时间:2019-06-29 22:37:48

标签: sql oracle

在代码中的某个点,该proc失败,并给出ORA-01858错误。在proc外部似乎工作正常。

我已经尝试了几种关于堆栈溢出的解决方案,但是似乎没有用。

begin

execute immediate ('truncate table DAILY_SALES');

end;

insert
/*+ Append */
into DAILY_SALES
(
columns...
)

SELECT 
'   Day ' ||
       TO_CHAR(TO_DATE(mv_rpt_daily_comp_sales.YTY_DATE,'DD-MM-YY'),
               'MM/DD/YYYY') Time_Period,  --'DD-MM-YY'
       TO_CHAR(ROUND((MIN(CASE
                            WHEN mv_rpt_daily_comp_sales.OWNER_GROUP = 'System' THEN
                             mv_rpt_daily_comp_sales.YTY_TTL_SALES_CHNG_PCT
                          END) * 100),
                     1),
               '990.9') || '%' AS "System",
       TO_CHAR(ROUND((MIN(CASE
                            WHEN mv_rpt_daily_comp_sales.OWNER_GROUP = 'Company' THEN
                             mv_rpt_daily_comp_sales.YTY_TTL_SALES_CHNG_PCT
                          END) * 100),
                     1),
               '990.9') || '%' AS "Company",
       TO_CHAR(ROUND((MIN(CASE
                            WHEN mv_rpt_daily_comp_sales.OWNER_GROUP = 'Franchise' THEN
                             mv_rpt_daily_comp_sales.YTY_TTL_SALES_CHNG_PCT
                          END) * 100),
                     1),
  ....

1 个答案:

答案 0 :(得分:0)

您在这里主要使用“三列”,其数据类型应如下:

  • mv_rpt_daily_comp_sales.YTY_DATE ->必须为数据类型VARCHAR2,并且包含格式为'DD-MM-YY'
  • 的所有值
  • mv_rpt_daily_comp_sales.OWNER_GROUP ->必须具有数据类型VARCHAR2
  • mv_rpt_daily_comp_sales.YTY_TTL_SALES_CHNG_PCT ->必须为NUMBER数据类型(或可以为VARCHAR2,此列中的所有值为number

我希望它将对您找到解决方案有用。

干杯!