本帖最后由 bruce 于 2020-7-17 09:44 编辑 说一个使用场景。很多时候我们需要调用外部数据源(数据库),来完成我们取数。 目前云表的,外部数据源 只支持 数据表和视图,不支持存储过程。 我们需要取数一些复查的查询数据时,只能先建立一个视图。 调用视图时,有一个问题,视图数据量非常大的时候,接口取数非常慢,会导致云表提示超时。其实我们需要的数据只有一点点,而视图又不支持参数传递。除了优化视图sql外还有什么办法吗? 答案: 直接调用存储过程,传递参数过去,直接取出我们需要的数据。 如何调用呢?我的思路如下。 ① 在云表中建立两个个辅助模板。 第一个模板为,《触发存储过程》模板,建立一个【 单据编号】 字段,设置好权限。就可以了。 设计思路入下图,下图 因为我需要传递的参数较多,设计的字段也比较多。 第二个模板为,《临时数据》模板 。 数据表,建立为主表。字段设置:一个单据编号字段,和需要返回的其他字段 ,保存模板。 建立数据接口 { 查询数据(单据编号,其他参数1,他参数2,...) } 注意:图仅供参考,各位按照自己 的实际需求设计模板字段。 ② 在云表的数据库中建立好存储过程(sql),设定好参数变量(包含单据编号)。编写代码规则如下,当执行存储过程时,将查询结果的数 据插入到 《临时数据》模板中对应的字段。 ③在数据库中找到这个《触发存储过程》模板的数据表,建立 insert 触发器,执行存储过程。 数据库这里的操作就完成了。 ④在需要取数的模板 建立填表公式, 1 添加 工具栏 按钮 【取数】; 2 添加填表公式 “新建表单” 模板选择《临时表》; 3 添加赋值公式。 数据来源1 选择模板数据源接口, 找到《临时数据模板》 中的 { 查询数据(单据编号,其他参数1,他参数2,...) } 这个接口,绑定好参数, 然后进行对应的赋值操作。 |
+10
14 条回帖