主题
3.19 存储过程
存储过程专指数据库里面的存储过程,我们可以在数据库中写好存储过程后,在前端进行调用,这样能够满足更复杂的数字化处理需求。存储过程的使用分为编写和调用两个步骤。
- 编写是直接在数据库中操作,对数据库熟悉的伙伴可以通过后端数据库编写各种方法的存储过程,在编写存储过程时,可能会用到数据字段来查找表和字段的名称对应关系。
- 存储过程编写完成后,就可以通过Workfine设计器进行调用,调用的过程就是传参和取数的过程。
下面,我们将使用具体的例子来给大家介绍存储过程的使用。
3.19.1 存储过程的编写
Workfine支持主流的四种数据库,本文以SQL Server为例,讲解一个简单存储过程的新建使用
1、打开SSMS(SQL Server Management Studio,下同),登录帐套所在数据库实例
图:链接服务器
2、右击帐套数据库,选择"新建查询"
图:新建查询
3、在查询分析器中输入以下内容:
create procedure my_procedure @insert_data varchar(500) as begin drop table if exists insert_test create table insert_test( my_data varchar(500) ) insert into insert_test values (@insert_data) end
图:在查询分析器中输入代码
注:该存储过程名称为:my_procedure,定义了一个传入参数:@insert_data,主要功能为新建一个数据表并插入一行记录。实现了如下的动作:
1)尝试删除insert_test表,如果它存在
2)新建一个名称为insert_test的数据表,它拥有一个字段:my_data,该字段数据类型为:varchar(500)
3)向insert_test表中插入一行数据,内容为传递的参数@insert_data
4、按F5或执行按钮,将这个存储过程创建
图:命令完成
5、创建好的存储过程可以在左侧资源管理器中查看,双击帐套数据库=>可编程性=>存储过程(如果看不到可以右击存储过程分类,选择刷新)
图:查看存储过程
关于存储过程的详细开发和使用说明,可以参照SQL Server官方教程学习
3.19.2 存储过程的调用
Workfine支持在表单的保存/删除时执行存储过程,也支持在按钮里直接调用。
1、保存/删除时调用
1、打开需要绑定的模板,定义一个主表字段,用于传递存储过程的参数
图:定义主表字段
2、点击菜单栏右侧更多=>存储过程
图:打开存储过程
3、点击新建,输入一个记录名称,在存储过程下拉中找到上一步建立的my_procedure
图:新建存储过程
4、选择一个执行时机,希望这个存储过程在什么情况下执行。在此案例里,我们选择"保存时执行"
图:执行时机为保存时执行
5、选择完存储过程后,参数列表里就会将该存储过程下需要的所有参数提取出来。我们支持直接选择主表字段或编写表达式来传递参数。在此案例里,我们选择刚才定义的主表字段
图:设置参数
6、点击新建按钮,完成新建设置
图:完成新建
7、登录应用端,新建表单并填入需要传参的内容,点击保存按钮
图:填写传参内容
8、登录数据库,检查表是否创建成功,内容是否一致即可
图:检查是否创建成功
2、按钮点击时调用
1、打开模板,点击上方的"按钮/事件"
图:打开按钮/事件
2、新建一个按钮,设置好名称和显示名称
图:新建按钮
3、在显示位置里勾选表单顶部
图:设置按钮的显示位置
4、点击执行列表右侧的新增,选择存储过程并选择新建的my_procedure
图:给按钮绑定存储过程
5、点击存储过程右侧的设置按钮,设置参数绑定和传递
图:设置参数绑定和传递
6、将主表字段填写到取值传递中去,依次点击保存和新建,建立按钮
图:建立按钮
7、登录应用端,新建表单并填入需要传参的内容,点击保存按钮
图:输入传参内容
8、登录数据库,检查表是否创建成功,内容是否一致即可
图:检查是否创建成功
小结: 在Workfine中,由于有表间公式的功能,大多数数字化场景的处理并不会用到存储过程。在目前的使用经验中,只有特定的一些递归循环的场景才有可能用到存储过程,比如MRP的运算,经营目标的拆解和统计等。其余基本都可以通过表间公式的功能来处理,我们在掌握存储过程的同时,更应该用简单的方式来处理问题。