繁体   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