如何正确执行包含过程且在 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 中没有返回的查询的主要内容,如果未能解决你的问题,请参考以下文章

作为作业运行时,SSIS 变量不包含正确的值

如何正确发布从“加载”过程执行的事件?

CMake项目结构:如何正确地将库合并在一起并将它们包含在多个可执行文件中

如何执行以下包含类型作为输入参数的存储过程

oracle中如何执行包含动态SQL的存储过程?

ACID:数据库事务正确执行的四个基本要素