Ora-00936:将 Oracle OleDB Provider 与 OpenQuery 结合使用时缺少表达式
现象:将 Oracle OleDb 提供程序与 SQLServer 一起使用可能会导致“ORA-00936:缺少表达式”,当以下语法与 OpenQuery 一起使用时:SELECT * FROM OPENQUERY (SCOTTLINK,'SELECT [SYSDATE] FROM DUAL')错误消息:链接服务器“SCOTTLINK”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息“ORA-00936:缺少表达式”。消息 7321,级别 16,状态 2,第 1行准备查询“SELECT [SYSDATE] FROM DUAL”以针对链接服务器“SCOTTLINK”的 OLE DB 提供程序“OraOLEDB.Oracle”执行时出错。原因:OpenQuery 将查询原封不动地传递给提供程序,并且需要以正在使用的数据库的本机语法传递。Oracle 不支持 SQLServer 使用的 [columname] 语法。处理方法:去掉列名周围的括号。SELECT * FROM OPENQUERY (SCOTTLINK,'SELECT SYSDATE FROM DUAL')
现象:将 Oracle OleDb 提供程序与 SQLServer 一起使用可能会导致“ORA-00936:缺少表达式”,当以下语法与 OpenQuery 一起使用时:SELECT * FROM OPENQUERY (SCOTTLINK,'SELECT [SYSDATE] FROM DUAL')错误消息:链接服务器“SCOTTLINK”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息“ORA-00936:缺少表达式”。消息 7321,级别 16,状态 2,第 1行准备查询“SELECT [SYSDATE] FROM DUAL”以针对链接服务器“SCOTTLINK”的 OLE DB 提供程序“OraOLEDB.Oracle”执行时出错。原因:OpenQuery 将查询原封不动地传递给提供程序,并且需要以正在使用的数据库的本机语法传递。Oracle 不支持 SQLServer 使用的 [columname] 语法。处理方法:去掉列名周围的括号。SELECT * FROM OPENQUERY (SCOTTLINK,'SELECT SYSDATE FROM DUAL')