存储过程数据集

存储过程(Stored Procedure)是一种在数据库中存储的复杂程序,用户通过调用存储过程来执行这个程序。存储过程是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过调用存储过程来执行这组 SQL 语句。

存储过程是保存在物理数据库里边的,因此应用这边并不会自行定义和保存存储过程。应用只是对数据库已存在的存储过程进行调用,并处理和封装返回结果。

在使用场景这块,需要着重说明:

  • 首先这是个数据集,因此适合于需要通过存储过程返回二维数据的场景。
  • 其次适合于复杂逻辑处理后的结果返回和展示。存储过程因为可以执行一组 SQL 语句,可以实现复杂逻辑的计算,并返回最终结果。对比视图数据集和 SQL 数据集,适应更多的计算、修改和查询场景。
  • 如果存储过程不返回数据,则不应该使用存储过程数据集来调用。如果是这类不返回数据的调用,可以定义服务接口,在接口中来再调用存储过程。

数据集设计

在动态数据集的右侧,点击+按钮,可以创建新的 存储过程 数据集:

1705575378252

1705575378252

设置数据库中的存储过程名

文章开头提到,由于存储过程是存储到数据库中的,因此数据集这边只是配置需要调用哪个存储过程即可。

在存储过程名输入框中输入数据库中已定义的存储过程标识。

  • 先在数据库中找到对应的存储过程标识

1705575378252

  • 再设置到数据集定义中

1705574532884

如果是要跨数据库调用,设置存储过程名为 数据库.实例名.存储过程名,如下图所示

添加输入参数

如果存储过程定义了输入 IN 参数,数据模型这块也可以对应传入参数。

1705650844152

添加参数时,参数名称要和存储过程那边定义的一致,并且参数分类选择查询参数,勾选输入。同时设置一个默认值,这样不手动传参调用存储过程也不会报错。

1705655974877

添加输入参数后,后续在页面中,可对存储过程数据集设置相应的参数值。

添加输出参数

由于不同数据库,在输出参数这块使用不一致。因此这块需要根据不同数据库类型来设置。

MySQL 不需要额外设置输出数据集。

只需要在存储过程最后, select 返回数据即可。比如:

BEGIN  
    update main_product set needBook = 1 where stock >= paramStock;
    select * from main_product;
END

数据模型会根据存储过程返回的列来映射模型这边的列。

设计返回结构

由于是数据集,也就是存储过程也需要返回数据。如果数据集不返回数据,后续使用上会有问题,查询会提示:

1705656750356

因此如果存储过程不返回数据,不建议定义存储过程数据集来调用,使用服务接口那边编写代码来调用。

存储过程定义时,可以采用 select xxx from xxx 语句来返回数据,那么在数据模型定义这边,需要把返回列也定义好。

存储过程数据集要返回的列,可以在结构页签中自行设计。需要快捷操作的话,可以点击自动同步功能,会根据返回的列,自动把结构对应添加上去:

image-20240102175929386

1705656861793

设计完成后,点击页面右上角的保存按钮即可保存。

保存路径

  • 数据集的模型描述文件

xxx.data.m 保存在当前模块的根目录下,比如 main 模块的根目录下:

1705657165780

在 .data.m 文件中,会使用 <class type="storedProcedure" 来标识存储过程数据集:

1705657143778

使用场景

由于存储过程可以定义多条查询和修改的语句,因此数据集不仅可以做查询使用,还可以对数据进行新增、修改和删除等操作。

存储过程数据集,在前端页面会以数据组件的方式来使用。

undefined

将数据集拖动到页面后,该数据组件就会在各组件进行绑定使用了。这里和表数据集使用比较类似,这里不再赘述。

如果存储过程数据集定义了输入参数,可以在数据集的属性编辑中对参数进行设置:

1705659133455

设置后,在调用存储过程的时候,会传入相应的参数过去。

results matching ""

    No results matching ""