2013-08-30 2 views
0

내가 PL/SQL에서 다음 코드를 사용하여 날짜로 문자열을 변환하려고로 문자열을 변환 TO_DATE 함수를 사용하여 :ORA-01858 오류 날짜

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

당신은 지금까지 문자열 '$ (vfrom)'의 암시 적 변환이 WHERE NVL(SCH_END_DATE,SCH_START_DATE) BETWEEN '$(vfrom)' and '$(vto)'. 그게 효과가 없을거야. 그 vfrom 및 VTO 가정

날짜로 선언 된 라인이 WHERE NVL(SCH_END_DATE,SCH_START_DATE) BETWEEN vfrom and vto 같이해야한다.