Oracle ORA-01858使用to_date函数将字符串转换为日期时出错

Oracle ORA-01858使用to_date函数将字符串转换为日期时出错,oracle,plsql,date-conversion,ora-01858,Oracle,Plsql,Date Conversion,Ora 01858,我正在尝试使用PL/SQL中的以下代码将字符串转换为日期: 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) O

我正在尝试使用PL/SQL中的以下代码将字符串转换为日期:

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函数中将日期设置为此处的格式,在互联网上搜索过,但我无法找到它。请提供帮助。

行中,NVL(SCH_END_日期,SCH_START_日期)介于“$(vfrom)”和“$(vto)”之间
将字符串“$(vfrom)”隐式转换为日期。那是行不通的

假设vfrom和vto被声明为日期,那么行应该是这样的
,其中vfrom和vto之间的NVL(SCH_END_date,SCH_START_date)