2013-08-30 64 views
0

我想在PL/SQL中使用下面的代碼字符串轉換成日期錯誤:ORA-01858使用TO_DATE函數字符串轉換成日期

BEGIN 
    vfrom := TO_DATE ('20/08/2013', 'dd/mm/yyyy'); 
    vto := TO_DATE ('30/08/2013', 'dd/mm/yyyy'); 

    OPEN L_CURSOR FOR 
     SELECT DSAT.ORGANIZATION_ID, 
      APPS.DAW_INV_ORG_NAME (DSAT.ORGANIZATION_ID) ORGANIZATION_NAME, 
      APPS.DAW_CAT_NAME (MC.SEGMENT4) PRODUCT, 
      TRUNC (NVL (DSAT.SCH_END_DATE, DSAT.SCH_START_DATE)) 
       TRANSACTION_DATE, 
      TO_CHAR (NVL (DSAT.SCH_END_DATE, DSAT.SCH_START_DATE), 
         'MM-YYYY') 
       MONTH, 
      DSAT.ITEM_SEGMENTS ITEM_CODE, 
      DSAT.ITEM_DESCRIPTION, 
      DSAT.CURRENT_FORECAST_QUANTITY PLAN_QTY 
     FROM APPS.DAW_SCPDB_ASCP_TPP_V DSAT, 
      APPS.MTL_ITEM_CATEGORIES MIC, 
      APPS.MTL_CATEGORIES MC 
     WHERE  NVL (SCH_END_DATE, SCH_START_DATE) BETWEEN '$(vfrom)' 
                 AND '$(vto)' 
      AND MIC.CATEGORY_SET_ID = 1100000061   --- PLANING CATEGORY 
      AND MC.CATEGORY_ID = MIC.CATEGORY_ID 
      AND DSAT.INVENTORY_ITEM_ID = MIC.INVENTORY_ITEM_ID 
      AND DSAT.ORGANIZATION_ID = MIC.ORGANIZATION_ID 
      AND DSAT.FORECAST_SET = '$(vForecastSetDPL2)'; --- Need to Update it on Monthly Basis; 
END PorductPlanningForecast; 

錯誤發生是由於

ORA- 01858:在第29行發現一個數字字符

其中包括打開查詢光標。我已經檢查NSL參數,並在to_Date函數中設置日期格式,在互聯網上搜索,但我無法弄清楚。請幫忙。

回答

1

在行WHERE NVL(SCH_END_DATE,SCH_START_DATE) BETWEEN '$(vfrom)' and '$(vto)'您已隱式轉換字符串'$(vfrom)'到日期。這是行不通的。

假設vfrom和vto被聲明爲日期,該行應該是這樣的WHERE NVL(SCH_END_DATE,SCH_START_DATE) BETWEEN vfrom and vto

相關問題