首页 > 解决方案 > 如何正确执行包含过程且在 Objectscript/Intersystems IRIS 中没有返回的查询

问题描述

我正在尝试从我的操作中执行存储过程,我获得最满意结果的方式是通过以下调用:

Set tResult = ##Class(EnsLib.SQL.GatewayResultSet).%New()
Set tQuery = "EXEC MY_PROC @name = 'Jhon', @profession = 'carpenter'"
Set tSC = ..Adapter.ExecuteQuery(.tResult, tQuery)

该过程已执行,(它从 ODSE 数据库中删除注册表并且默认情况下没有返回)但我收到一个错误,例如

“错误 #5023 远程网关错误。该语句未返回结果集。”

我的手术停止了。

我什至尝试了 ExecuteProcedure 方法但没有成功。

任何人都可以帮助我:)

附言。我是这个堆栈的新手,而且是初级。丁:

提前致谢。

标签: executequeryobjectscriptintersystems-iris

解决方案


我发现了我的问题,我在这个场合调用了错误的方法。调用没有返回的过程或查询的正确方法是ExecuteUpdate()代替ExecuteQuery(). 此方法仅返回受影响的行数并接收我们的过程命令。所以这个例子就像:

Set tQuery = "EXEC MY_PROC @name = 'Jhon', @profession = 'carpenter'"
Set tSC = ..Adapter.ExecuteUpdate(.tNumberOfRowsAffected, tQuery)

Objectscript 的官方文档有时就像一个黑暗的洞穴。


推荐阅读