用于链接服务器[ORA]的OLE DB提供程序[OraOLEDB.Oracle]返回消息ORA-00936:缺少表达式

时间:2013-04-05 17:25:19

标签: sql sql-server sql-server-2008 oracle11g

我在OPENQUERY时遇到了一些问题。

我有这个简单的链接服务器SQL:

SELECT [ITEM_SERIAL].[SERIAL_NO]
       , [ITEM_SERIAL].[SUB_SEQ_NO_FIRM]
       , [ITEM_SERIAL].[ITEM_NO]
FROM [ORA]..[SSDIGICO].[ITEM_SERIAL]
ORDER BY [ITEM_SERIAL].[SERIAL_NO]

这顺利,没问题......

现在我尝试使用OPENQUERY方法来提高性能,例如:

SELECT * FROM OPENQUERY(ORA,'
    SELECT [ITEM_SERIAL].[SERIAL_NO]
       , [ITEM_SERIAL].[SUB_SEQ_NO_FIRM]
       , [ITEM_SERIAL].[ITEM_NO]
    FROM [SSDIGICO].[ITEM_SERIAL]
    ORDER BY [ITEM_SERIAL].[SERIAL_NO]
')

由于某种原因,我收到以下错误消息:

  

返回链接服务器“ORA”的OLE DB提供程序“OraOLEDB.Oracle”   消息“ORA-00936:缺少表达”。 Msg 7321,Level 16,State 2,   第1行准备查询“

时发生错误

有没有人知道我为什么会收到此错误?

感谢。

1 个答案:

答案 0 :(得分:1)

Oracle不在表或列周围使用方括号。代码应该是:

SELECT * FROM OPENQUERY(ORA,'
    SELECT ITEM_SERIAL.SERIAL_NO
       , ITEM_SERIAL.SUB_SEQ_NO_FIRM
       , ITEM_SERIAL.ITEM_NO
    FROM SSDIGICO.ITEM_SERIAL
    ORDER BY ITEM_SERIAL.SERIAL_NO
')