簡體   English   中英

存儲過程調用鏈接服務器上的語法錯誤?

[英]Syntax error on stored procedure call to linked server?

我有一台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無法使用此return方法...

您是否嘗試過使用OpenQuery

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

在本機Informix中,您將編寫(大約):

EXECUTE PROCEDURE database@linkedServer:selectAllFromMYTABLE();

我不確定您是否適合在其中放置實例名稱-'linkedServer'對應於實例名稱(按照我的想法)。 最接近的方法是:

database@linkedServer:instancename.selectAllFromMyTABLE()
instancename@linkedServer:database.selectAllFromMyTABLE()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM