麦粉社区
>
帖子详情

存储过程数据集

高级开发 发表于 2019-11-21 15:33
发表于 2019-11-21 15:33:12
存储过程数据集是针对存储过程定义数据集条件和内容的一类数据集。


前提条件
  • 在产品中使用的存储过程在数据库创建时是有一些要求的,具体请先参考存储过程要求。
  • 在创建存储过程数据集前,必须确保“存储过程管理”窗口中通过 自动检测检测结果集 按钮分别检测出相关的参数和获取存储过程的结果集。

操作入口
在“数据集”界面新建存储过程数据集。
1、进入“数据集”界面的入口:
入口1:选择系统快捷菜单 数据集 。
入口2:选择系统导航栏的 数据准备 ,选择“数据准备”界面主菜单 数据集
2、新建存储过程数据集的入口:
入口1:在“数据集”界面点击 新建数据集 > 存储过程数据集
入口2:在“数据集”界面的表格树目录区,在现有文件夹的更多操作,选择 新建数据集 > 存储过程数据集
界面介绍
“存储过程数据集”界面主要分为以下几区域:
  • 可选资源区:该区列出可供选择的字段。
  • 输出字段区:该区列出了所有可被存储过程数据集使用的资源。
  • 参数绑定区:将存储过程中的参数与事实表中相应的参数进行绑定的操作区。
  • 属性区:列出存储过程数据集输出的资源,并可以在下方设置属性。在“存储过程数据集”界面中同样可以进行告警设置、局部参数设置。
  • 工具栏:列出了所有可用于编辑存储过程数据集的工具按钮。
可选资源区
存储过程数据集必须确保在“存储过程表属性”窗口中通过 自动检测检测结果集 按钮分别检测出相关的参数和获取存储过程的结果集。
这样才会在可选资源区列出了所有可被存储过程数据集使用的字段。用户只需将各字段拖到该区域即可。
参数绑定区
将存储过程中的参数与事实表中相应的参数进行绑定的操作区。如下图,会把存储过程检测出来的参数放到参数绑定区域,点击 绑定 按钮。
弹出选择参数对话框后,根据需要选择参数后点击确定则实现存储过程参数和产品中的参数的绑定。
预览数据可以看到绑定参数后存储过程数据集生成的灵活分析的效果。
属性区
属性区用于设置数据集相关资源的属性。它主要包含两个部分:数据集输出区和属性面板。
  • 数据集输出区:该区显示所有数据集输出的相关资源,该区通常与“属性面板”结合起来用于对这些资源的属性进行管理,包含:输出字段属性、私有参数输出参数告警设置
  • 属性面板:该区需要与“工作区”结合使用,单击工作区中的任一资源,即在属性面板中列出该资源的相关属性信息。用户可以在属性面板中重新设置资源的相关属性。
工具栏
存储过程数据集工具栏的按钮说明如下:
工具栏的按钮说明如下表,对应的功能点击超链接跳转到详细分析。
按钮名称

说明


保存
保存数据集到默认路径。

另存
保存数据集到用户指定路径。

视图
用于区域的显示和隐藏。包含显示/隐藏资源区、显示/隐藏属性区。

定义多重表头
对SQL数据集的表头进行修改添加,形成多重表头。

参数布局
调整参数在SQL数据集对应的报表中的位置。

Excel模板设置
把当前数据集的数据结果填充到用户自定义的Excel模板中。

高级设置
用于设置当前数据集的缓存策略和分页策略。

预览数据
对新建或修改的数据集进行预览。

数据抽取
用于将当前数据集的数据抽取到MPP。

存储过程要求前提条件
在Smartbi中使用存储过程的前提条件是:存储过程必须有结果集返回。

                                Icon                                            1.Oracle是通过输出参数作为结果集返回的。
2.存储过程的OUT参数只支持游标类型,而且只支持单个输出参数。
                    
   
调用方法说明
在Smartbi中存储过程检测参数的调用方法如下:
数据库类型

存储过程获取参数


Teradata
Teradata JDBC接口没有直接提供获取宏参数和字段的方法,所以是通过执行以下SQL语句数据集获得参数的:
SELECT C.* FROM DBC.TABLES T, DBC.COLUMNS C
WHERE
T.DATABASENAME=? AND T.TABLENAME=? AND
T.TABLEKIND='M'  AND T.DATABASENAME=C.DATABASENAME AND T.TABLENAME=C.TABLENAME

Oracel、DB2等其他数据库
调用JDBC中的标准方法: connection.getMetaData().getProcedureColumns(...)


在Smartbi中存储过程检测结果集的调用方法如下。检测结果集:是在前端弹出界面让用户输入参数后,真正的执行一次存储过程而获得输出字段。
数据库类型

存储过程执行过程


Teradata
调用下面语句执行宏:
connection.prepareStatement("{Exec macroName(?,?)}")

Oracel、DB2等其他数据库
调用JDBC中的标准方法:
connection.prepareCall("{Call procName(?,?)}")

数据库权限要求
数据库类型

数据库权限要求


Teradata
要求连接用户必须具有访问DBC.TABLES、DBC.COLUMNS的权限,及调用Exec方法的权限。

Oracel、DB2等其他数据库
要求连接用户必须具有调用getProcedureColumns和Call方法的权限。








                                    

                                               




发表于 2021-5-10 17:18:18
新建ORACLE用户user,新建存储过程数据集时看不到存储过程,已经做了以下授权了,请问还需要哪些授权呢?
GRANT
CONNECT,
CREATE  SESSION,           
SELECT ANY TABLE,
SELECT ANY DICTIONARY,
DEBUG ANY PROCEDURE,
Execute ANY PROCEDURE,
DEBUG CONNECT SESSION,
CREATE PUBLIC DATABASE LINK
TO user;

GRANT resource TO user;
grant create any procedure to user;
grant Execute any procedure to user;
grant debug connect session to user;
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1回帖数 0关注人数 4143浏览人数
最后回复于:2021-5-10 17:18
快速回复 返回顶部 返回列表