17.4外部数据源存储过程

在使用云表过程中,有时我们需要对接到数据库,操作数据库中的表。在需要同时操作多张表时,直接使用云表可能要注册多个模板、创建多条业务公式,并且在执行时不是在一个事务中,相对来说比较繁琐。 这种情况可以通过数据库的存储过程来解決这一问题

什么是存储过程?
存储过程是在数据库系统中,为了完成特定功能的SQL语句集合,这个存储过程存储在数据库中,一次编译后永久有效,是可以被外部程序调用的一种数据库对象。
存储过程就是数据库SQL语言层面的代码封装与重复使用,通俗而言,就是执行某项工作的一段固定的SQL语句。
存储过程的用法
在数据库对存储过程进行创建、修改、编译、删除等操作。
在云表浏览器中进行调用。

1、数据库端对存储过程的操作

针对不同类型的数据库,在数据库端的操作有所不同,可以根据自己的数据库类型查阅相应的文献资料:

2、云表浏览器如何使用存储过程

数据库创建好存储过程后,只需在云表完成2个步骤,就可以在云表中调用数据库的存储过程。
1、云表对接目标数据库
2、把存储过程设计成数据接口并调试使用 
假设现在设计了2个存储过程,【test_pro_1】和【test_pro_2】. 【test_pro_1】有2个参数“ID”“Name”,执行的动作为“插入”并“查询”. 【test_pro_2】针对同一个数据表,不带参数,执行的动作只有查询”。

第一步:对接目标数据库

可以使用“外部数据源”功能进行对接,在这里不详细描述,请移步查看“ 外部数据源”的对接方式。
对接外部数据库后,我们就可以在系统管理-外部数据源中,看到数据库中已经创建的所有“存储过程”。

第二步:设计数据接口

把存储过程设计成数据接口,以便在表单中传参数和调用。
1、选择“存储过程”
在外部数据源中,选择要调用的存储过程,如test_pro_2,这是存储过程在数据库中的名称。
点击左上角【注册】,会打开数据接口的设计窗口。此时“存储过程”已经选择好,不需要修改。 名称是指调用这个存储过程的接口名称,没有命名规范限制,例如“查询学号与姓名”。
2、选择数据列【易错点】
2.1、确认返回的字段名
在设计数据接口的时候,云表是无法得知存储过程内部的逻辑,也不知道存储过程最终的返回结果,所以,需要数据库开发人员告知云表开发人员,存储过程返回的字段名(即云表中的数据项,在数据库中称为字段)。如【test_pro_2】返回的字段分别为“ID”“Name”。
2.2、添加数据项
点击“添加数据项”,输入列名和表达式。在数据项表达式中,点击下拉列表,选择“存储过程.”后,需要在后面手动输入数据库返回字段的字段名“ID”,另一个数据项则是“存储过程.Name”,如下图:
如此就设置好调用存储过程【test_pro_2】所需的数据接口,回到普通模版的设计界面,就可以在全局数据接口中找到接口“查询学号与姓名”进行调试和使用。
经过调试,查询出数据库中的数据表有3行数据,如下
2.3、带参数的存储过程
前面说到【test_pro_2】是不带参数的存储过程,那带参数的存储过程怎么设置呢?
首先,重复选择“存储过程”,“注册”成数据接口,但是存储过程需要选择【test_pro_1】。
从下图可以看到,名称的后面已经自动生成了参数的提示,参数是由数据库创建存储过程时决定的,云表只能显示,不能更改。
然后设置“数据列”,储存过程返回的“ID”“Name”,所以和前面设置是一样的。
最后,我们会发现“数据列”选择卡旁边多了一个“参数列表”选择卡,而且里面的参数已经自动生成,这是因为云表只是发出请求调用数据库的存储过程,是不可以修改存储过程内部的参数、逻辑、返回值的,所以参数不能增、删、改,只能设置是否必填和默认值。
设置完毕后,回到普通模版进行调试调用。假设,我们给参数ID传值“004”,给Name传值“乐图”,会执行插入并查询事件,把这组数据写入数据表,并且把更新后的数据查询出来,如下图:
3、在表单中调用存储过程接口
由于存储过程已经设计成【数据接口】,所以,其调用方法就数据接口的设计方法,没有任何差异。以填表公式为例,在填表公式中,选择前面设计的接口作为数据源,绑定存储过程参数对应的数据项,进行赋值更新操作,如下图:
设置完毕后,我们进行一下操作,确认是否调用成功:
1、用【test_pro_2】对应“查询学号与姓名”接口,查询数据库中的数据有哪些。
2、用【test_pro_1】对应“插入学号信息并查询”接口,插入一组新数据并查询结果。

总结

存储过程是在数据库中创建,并拥有一个或一组固定执行动作的SQL语句集合。
云表在这个应用场景中,只作为使用者的角色使用存储过程,不可对存储过程进行任何修改,云表将存储过程以数据接口的形式进行设置,以便普通表单进行调用。
2022-03-17
2625
Baidu
map