【问题标题】:ora-00936 missing expression-select statementora-00936 缺少表达式选择语句
【发布时间】:2017-12-20 00:57:11
【问题描述】:

我在 ssis 中有一个变量,带有查询

SELECT     OBS_TYPE_ID, OBS_TYPE_NAME, OBS_UNIT_ID, IS_LEAF, PATH, LEVEL0_NAME, LEVEL1_NAME, LEVEL2_NAME, LEVEL3_NAME, LEVEL4_NAME, 
                      LEVEL5_NAME, LEVEL6_NAME, LEVEL7_NAME, LEVEL8_NAME, LEVEL9_NAME, LEVEL10_NAME, LEVEL0_UNIT_ID, LEVEL1_UNIT_ID, 
                      LEVEL2_UNIT_ID, LEVEL3_UNIT_ID, LEVEL4_UNIT_ID, LEVEL5_UNIT_ID, LEVEL6_UNIT_ID, LEVEL7_UNIT_ID, LEVEL8_UNIT_ID, LEVEL9_UNIT_ID, 
                      LEVEL10_UNIT_ID, HIERARCHY_LEVEL, CREATED_DATE, CREATED_BY, LAST_UPDATED_DATE, LAST_UPDATED_BY
FROM         NIKUREP.NBI_DIM_OBS_V
WHERE LAST_UPDATED_DATE >= TO_CHAR(TO_DATE( @[User::LastModifiedDate] ,'YYYY-MM-DD'),'YYYY-MM-DD')

当我的数据流任务连接到 oracle 执行此操作时,我得到 ora-00396 缺失的表达式,有人可以帮忙吗,已经尝试解决这个问题 1 周

【问题讨论】:

    标签: sql-server oracle ssis etl


    【解决方案1】:

    这可能是 @[User::LastModifiedDate] 表达式。

    确保您的参数(@[User::LastModifiedDate]) 在单引号之间。

    改变你的表情或试试这个

    ...

    WHERE LAST_UPDATED_DATE >= TO_CHAR(TO_DATE( '''' || @[User::LastModifiedDate] || '''' ,'YYYY-MM-DD'),'YYYY-MM-DD')
    

    【讨论】:

    • 这个@[User::LastModifiedDate] 的输出将是一个类似'1960-01-01'的日期,所以在参数中添加单引号将使其成为''1960-01-01'',您的查询也向我抛出了相同的错误消息
    • 这个查询的结果是什么?你能把它写在某个地方或看到它吗:“select @[User::LastModifiedDate] from ...” @user3132672
    • 输出将是“1960-01-01”或最大日期,如“2017-06-17”
    【解决方案2】:

    在变量选项卡上单击该变量,然后按F4 以显示属性选项卡。

    Evaluate as Expression 更改为 True ,并使用以下表达式:

    "SELECT     OBS_TYPE_ID, OBS_TYPE_NAME, OBS_UNIT_ID, IS_LEAF, PATH, LEVEL0_NAME, LEVEL1_NAME, LEVEL2_NAME, LEVEL3_NAME, LEVEL4_NAME, 
                      LEVEL5_NAME, LEVEL6_NAME, LEVEL7_NAME, LEVEL8_NAME, LEVEL9_NAME, LEVEL10_NAME, LEVEL0_UNIT_ID, LEVEL1_UNIT_ID, 
                      LEVEL2_UNIT_ID, LEVEL3_UNIT_ID, LEVEL4_UNIT_ID, LEVEL5_UNIT_ID, LEVEL6_UNIT_ID, LEVEL7_UNIT_ID, LEVEL8_UNIT_ID, LEVEL9_UNIT_ID, 
                      LEVEL10_UNIT_ID, HIERARCHY_LEVEL, CREATED_DATE, CREATED_BY, LAST_UPDATED_DATE, LAST_UPDATED_BY
    FROM         NIKUREP.NBI_DIM_OBS_V
    WHERE LAST_UPDATED_DATE >= TO_CHAR(TO_DATE('" + @[User::LastModifiedDate] + "','YYYY-MM-DD'),'YYYY-MM-DD')"
    

    【讨论】:

    • 你要加单引号TO_DATE('" + @[User::LastModifiedDate] + "',
    • 您的查询已解决问题,我可以在数据流任务中预览,但是当我执行我的 ssis pacakge 时,我得到“描述:“ORA-00907:缺少右括号错误” ,我认为没有缺少任何括号,有什么帮助吗?
    • 尝试将数据流任务Delay Validation属性更改为True
    猜你喜欢
    • 2021-11-22
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多