如何在“当前账套”类型的连接器中执行SQL从存储过程获得查询结果

作者:禹老师
1 背景
在某客户项目中,开发人员在苍穹的数据库中设计了一个存储过程 fuc_cas_voucherinf 获取查询结果,并希望通过SELECT语句对查询结果进行过滤。在SQL查询分析器执行,验证该SQL是数据库上是可以执行的,如下图:

在服务流程的脚本中,该开发输入如下SQL语句,通过execute_call函数调用。执行失败,错误原因如下图所示。


2 原因分析
因为当前账套不支持调用存储过程。考虑到苍穹适配多种数据库,为防止数据库私有技术导致数据库迁移的复杂性,苍穹平台原则上禁止使用数据库的函数、存储过程、触发器。但在项目上,使用数据库的私有技术在特定情况下可以简化业务实现,仍然具有一定的必要性。比如:此文档所示使用存储过程返回查询结果。
为避开平台的限制,对于返回临时表的存储过程,可以当成普通的SELECT语句执行,但要注意数据库分库标识必须附加在存储过程名后面,且分库标识后必须加上空格与括号分隔,类似下面的写法。并使用 query_list 函数执行查询。
SELECT * FROM fuc_cas_voucherinf@fi () WHERE fnumber='xxx'
注意:数据库分库 @fi 与后面的括号之间必须有空格,否则将发生如下异常。

在成功的将SQL传递
如何在“当前账套”类型的连接器中执行SQL从存储过程获得查询结果
作者:禹老师1 背景在某客户项目中,开发人员在苍穹的数据库中设计了一个存储过程 fuc_cas_voucherinf 获取查询结果,并希望通过SELECT...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



