存储过程

我是社区第238588位番薯,欢迎点我头像关注我哦~
1. 概述

存储过程,就是直接将存储过程作为数据集,不需要在数据库查询而是去调用存储过程。FineReport 支持全部数据库的存储过程作为数据集并且定义方法都相同。

下面我们就以 Oracle 为例,建一个模板数据集,为大家介绍下具体的定义方法。

注:在 7.0.4 及之后的版本中存储过程分为模板存储过程数据集和服务器存储过程数据集,在 7.0.4 版本之前,只有服务器存储过程数据集。

2. 定义数据集

点击模板>模板数据集或者直接在数据集面板中,点击+如下图所示:

切换到 Oracle 数据库所在的数据连接,双击所需要添加的存储过程,如下图:

注:MySQL,DB2,Orcale,SQLServer 是支持自动获取参数和参数的默认值的,而 Access,HSQL,Sybase 无法自动获取需要手动添加。

注:在 JAR 包版本 2018-1-11之后,内置的 MySQL 驱动更新,新版本里面存储过程查询默认不用别名,即 select XXX AS XXX from... 默认没有变成 as 之后的值。

需要手动指定一下:在 URL 后边加 ?useOldAliasMetadataBehavior=true,例如:jdbc:mysql://env.finedevelop.com:55703/testskp?useOldAliasMetadataBehavior=true。

定义完的存储过程数据集如下图:

由于其是模板数据集处,因此该存储过程会存在模板数据集中,如果是在服务器数据集处定义的,则就会显示在服务器数据集所在的 Tab 中。

注:FineReport 存储过程返回的是数据集,不能返回单个的参数值。

3. 支持返回多个结果集

若存储过程中返回的是多个结果集,在此也是支持同时返回多个结果集:

点击预览可以看到多个结果集,如下图所示:

数据集可以同时查看多个结果集,如下图所示:

注:多个结果集只执行一次储存过程。

4. 游标

存储过程中的游标详细请参照 游标

5. 索引
序号内容简介文档教程
11.1Oracle分页存储过程的实现以 Oracle 数据库中的 SCOT T用户的 EMP 表为例,编写一个分页存储过程Oracle分页存储过程的实现

1.2程序包中存储过程的调用通过 用户名.包名.存储过程 或者 包名.存储过程 方式去调用程序包中存储过程的调用

1.3调用非当前用户下的存储过程通过用户名.存储过程的方式去调用调用非当前用户下的存储过程

1.4优化调用Oracle存储过程优化调用 Oracle 存储过程
22.1SqlServer2005分页存储过程的实现SqlServer2005分页存储过程的实现

2.2调用SqlServer存储过程报没有返回数据集错误调用SqlServer存储过程报没有返回数据集错误

参与人数 +1 F豆 +100 理由
誓言无悔 + 100 骚年,我看好你哦

查看全部评分

发表于 2020-9-28 12:13:19
又学会了一招
发表于 2020-9-29 16:57:49
下一次试试,一直想用但是一直没用起来
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

2回帖数 4关注人数 21301浏览人数
最后回复于:2022-9-14 17:15

返回顶部 返回列表