executequery - 如何正确执行包含过程且在 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 方法但没有成功。
任何人都可以帮助我:)
附言。我是这个堆栈的新手,而且是初级。丁:
提前致谢。
解决方案
我发现了我的问题,我在这个场合调用了错误的方法。调用没有返回的过程或查询的正确方法是ExecuteUpdate()
代替ExecuteQuery()
. 此方法仅返回受影响的行数并接收我们的过程命令。所以这个例子就像:
Set tQuery = "EXEC MY_PROC @name = 'Jhon', @profession = 'carpenter'"
Set tSC = ..Adapter.ExecuteUpdate(.tNumberOfRowsAffected, tQuery)
Objectscript 的官方文档有时就像一个黑暗的洞穴。
推荐阅读
- tsql - CRM - 使用“不兼容”的值组合查询记录(SQL、SSRS)
- talend - 在 tFileInputDelimited 中使用上下文变量作为文件名
- javascript - javascript将角度前端与现有网站/项目集成
- scrapy - scrapy - 来自以下页面的数据
- php - 使用php将表单数据附加到json文件
- javascript - 说如果在javascript中保持30分钟
- outlook - EWS:如何从 Outlook 获取 CRM ID?
- java - 尝试制作 group.toList() 但看起来有问题。但是得到了:只允许一个订阅者!如何修复代码?
- hyperledger-fabric - Hyperledger Fabric:无法更新排序服务端点,因为找不到带有 mychannel id 的通道
- python - 无法在 Python 中提取加密的 Zip 文件