如何正确执行包含过程且在 Objectscript/Intersystems IRIS 中没有返回的查询
Posted
技术标签:
【中文标题】如何正确执行包含过程且在 Objectscript/Intersystems IRIS 中没有返回的查询【英文标题】:How to correctly execute a query that contains a procedure and has no return in Objectscript/Intersystems IRIS 【发布时间】:2021-09-30 18:31:03 【问题描述】:我正在尝试从我的操作中执行存储过程,我得到最满意结果的方式是通过以下调用:
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 方法但没有成功。
谁能帮帮我:)
附言。我是这个堆栈的新手,而且是初级。 D:
提前致谢。
【问题讨论】:
【参考方案1】:我发现了我的问题,我在这个场合调用了错误的方法。
调用没有返回的过程或查询的正确方法是ExecuteUpdate()
而不是ExecuteQuery()
。此方法仅返回受影响的行数并接收我们的过程命令。所以这个例子是这样的:
Set tQuery = "EXEC MY_PROC @name = 'Jhon', @profession = 'carpenter'"
Set tSC = ..Adapter.ExecuteUpdate(.tNumberOfRowsAffected, tQuery)
Objectscript 的官方文档有时就像一个黑暗的洞穴。
【讨论】:
以上是关于如何正确执行包含过程且在 Objectscript/Intersystems IRIS 中没有返回的查询的主要内容,如果未能解决你的问题,请参考以下文章