OLEDB错误ORA-01861

时间:2016-06-30 14:03:54

标签: oracle odbc oledb qlikview

我通过Qlikview连接到pl / sql(oracle),对于相同的脚本,我使用ODBC连接,脚本运行没有问题,但是当我使用OLEDB连接时,我收到错误ORA-01861:literal不匹配格式字符串。我的问题主要是为什么我的脚本使用ODBC连接但不使用OLEDB?

添加代码,因为我想使我的查询与OLE DB连接兼容......下面是挂起的地方......

SELECT DISTINCT B.CLT_CLT_PGMID,TO_CHAR(B.FIRST_PHONE_CONTACT,'MM/DD/YYYY') AS FIRST_PHONE_CONTACT,
                        ABS(TO_DATE(B.FIRST_ASSGN_DT, 'DD-MM-YYYY') - TO_DATE(B.FIRST_PHONE_CONTACT, 'DD-MM-YYYY')) AS FIRST_Contacted_By_Phone_Days

         FROM (
                SELECT DISTINCT MIN(SERVICE_DATE) AS FIRST_PHONE_CONTACT
                                   ,a.FIRST_ASSGN_DT, a.FIRST_CONTACT_DT, d.is_visit, d.attempt_or_contact,a.PERS_GEN_KEY,a.CLIENT_PROGRAM,a.clt_clt_pgmid

                  FROM  A
                    LEFT JOIN   D ON A.CLT_CLT_PGMID = D.CLT_CLT_PGMID AND A.ID_CARD = D.ID_CARD

                    WHERE 1=1
                   rownum <10

                      GROUP BY  a.FIRST_ASSGN_DT, a.FIRST_CONTACT_DT, d.is_visit, d.attempt_or_contact,a.PERS_GEN_KEY,a.CLIENT_PROGRAM,a.clt_clt_pgmid
                                                                                                                                                         ) B

以下是发生错误的地方   ABS(TO_DATE(B.FIRST_ASSGN_DT,'DD-MM-YYYY') - TO_DATE(B.FIRST_PHONE_CONTACT,'DD-MM-YYYY'))AS FIRST_Contacted_By_Phone_Days

2 个答案:

答案 0 :(得分:2)

在您的电脑上查看此内容:

对于OLE DB,它说:

无法使用ALTER SESSION SET NLS_DATE_FORMAT命令设置Oracle会话的日期格式。在Visual Basic中,日期格式由Windows控制面板中的“区域设置”属性控制。有关Visual Basic日期格式的详细信息,请参阅Visual Basic文档。

对于OLE DB的Oracle Provider,如果Connection属性UseSessionFormat为FALSE(默认值),则提供者将NLS_DATE_FORMAT修复为“YYYY-MM-DD HH24:MI:SS” 。如果将日期作为字符串传递给Oracle数据库,则日期必须采用“YYYY-MM-DD HH24:MI:SS”格式。如果UseSessionFormat为TRUE,则Oracle Provider for OLE DB不会修复NLS_DATE_FORMAT,并且使用默认会话NLS_DATE_FORMAT。

ODBC的行为可能不同。

答案 1 :(得分:0)

理想情况下两者都应该有效。请参阅Post

  
      
  • ODBC仅提供对关系数据库的访问
  •   
  • OLE DB提供以下功能      
        
    • 访问数据,无论其格式或位置如何
    •   
    • 对ODBC数据源和ODBC驱动程序的完全访问权限
    •   
  •   

因此,OLE DB似乎与基于SQL的数据源THRU ODBC驱动程序层交互。

alt text