2011-05-23 70 views
1

我有一個Informix機我已經配置爲SQL Server中的鏈接服務器。對鏈接服務器的存儲過程調用的語法錯誤?

我可以遠程發送和接收的,對於查詢的結果,說

SELECT * FROM linkedServer.instanceName.database.myTable 

,但不能運行

linkedServer.instanceName.database.selectAllFromMYTABLE 

存儲過程。

我就要返回的錯誤消息 「[Informix的] [Informix ODBC驅動程序] [Informix的]發生了語法錯誤。」這不是大規模的幫助,但它告訴我,我的要求以某種形式獲得...

有人能告訴我什麼是正確的調用語法將通過SQL Server以執行一個Informix存儲過程?據推測,我搞砸了存儲過程調用,因爲可以驗證存儲過程在Informix服務器上正常工作。

編輯:添加一個存儲過程,我測試的全文,爲了驗證我沒有做Informix中的一些愚蠢的事,這是造成一個連鎖問題在SQL Server執行:

CREATE FUNCTION sp_testSP() 
    RETURNING char(20) as item_no 

    DEFINE item_no char(20); 

    FOREACH 
    SELECT table_name.item_code 
    INTO item_no 
    FROM table_name 
    WHERE table_name.item_code LIKE 'test%' 
    RETURN item_no WITH RESUME; 
    END FOREACH; 
END FUNCTION 

正如我所提到的,這似乎在我已經連接到Informix的RazorSQL中工作正常,但也許看到這會慢跑某人的內存,原因是SQL Server無法使用此返回方法...

回答

2

您是否嘗試過使用OpenQuery

http://msdn.microsoft.com/en-us/library/ms188427.aspx

+0

它看起來很有希望,但看完文章,我發現:「OPENQUERY不能用於對鏈接服務器上執行擴展存儲過程」 – Frosty840 2011-05-24 07:09:35

+0

嗯......我已經得到openquery來請求存儲過程的執行,但它獲得與其他方法相同的語法錯誤消息。 – Frosty840 2011-05-24 07:19:27

+1

'select * from openquery([linkedServer],'execute function instancename:sp_testSP()')'working。括號和所有。 – Frosty840 2011-05-24 08:03:59

1

在本地Informix中,你會寫(大約):

EXECUTE PROCEDURE [email protected]:selectAllFromMYTABLE(); 

我不知道哪裏比較你會適應一個實例名成 - 在「linkedServer」對應於一個實例名稱(以我的想法)。最近的方法是:

[email protected]:instancename.selectAllFromMyTABLE() 
[email protected]:database.selectAllFromMyTABLE() 

但是,這是通過本機Informix接口。如果你通過SQL Server,那麼語法可能需要是用於調用過程的本地SQL Server語法。理論上,我相信,所使用的API(ODBC或其他)應該能夠轉換爲本地Informix語法。

+0

在某些時候,昨天,我收到的是「遠程過程調用」並沒有對行'linkedServer.instanceName.database.selectAllFromMYTABLE'我的鏈接服務器連接啓用了一個錯誤,所以我認爲這是行調用存儲過程和失敗。我的主要困惑來自爲什麼,現在我已經啓用RPC在SQL Server鏈接服務器對象,現在失敗,此語法錯誤,當存儲過程從直接到Informix的連接執行時,它不包含這樣的錯誤造成的。 – Frosty840 2011-05-24 07:16:11

相關問題