Page tree
Skip to end of metadata
Go to start of metadata

存储过程查询是针对存储过程定义查询条件和内容的一类数据集。

 

文档目录:

1、前提条件

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


2、操作入口

在 定制管理>资源定制 节点及其目录节点上右键选择 新建查询> 存储过程查询,或在资源快捷按钮区域选择 数据集 > 存储过程查询 ,则弹出选择数据源窗口,根据需要选择数据源及其存储过程,进入“存储过程查询”界面。

 

3、界面介绍

“存储过程查询”界面主要分为以下几区域:

  • 可选资源区:该区列出可供选择的字段。
  • 字段区:该区列出了所有可被存储过程查询使用的资源
  • 参数绑定区:将存储过程中的参数与事实表中相应的参数进行绑定的操作区。
  • 属性区:列出存储过程查询输出的资源,并可以在下方设置属性。在“存储过程查询”界面中同样可以进行告警设置、局部参数设置
  • 工具栏:列出了所有可用于编辑存储过程查询的工具按钮。

3.1 可选资源区

存储过程查询必须确保在“存储过程表属性”窗口中通过 自动检测检测结果集 按钮分别检测出相关的参数和获取存储过程的结果集,详细信息请参见表属性。

这样才会在可选资源区列出了所有可被存储过程查询使用的字段。用户只需将各字段拖到该区域即可。

3.2 参数绑定区

将存储过程中的参数与事实表中相应的参数进行绑定的操作区。如下图,会把存储过程检测出来的参数放到参数绑定区域,点击 绑定 按钮。

则会弹出选择参数对话框,根据需要选择参数后点击确定则实现存储过程参数和产品中的参数的绑定。

预览数据可以看到绑定参数后存储过程查询生成的灵活分析的效果。

3.3 属性区

属性区用于设置查询相关资源的属性。它主要包含两个部分:查询输出区和属性面板。

  • 查询输出区:该区显示所有数据集输出的相关资源,该区通常与“属性面板”结合起来用于对这些资源的属性进行管理,包含:输出字段属性、私有参数输出参数告警设置
  • 属性面板:该区需要与“工作区”结合使用,单击工作区中的任一资源,即在属性面板中列出该资源的相关属性信息。用户可以在属性面板中重新设置资源的相关属性。

3.4 工具栏

存储过程查询工具栏的按钮说明如下:

工具栏的按钮说明如下表,对应的功能点击超链接跳转到详细分析

按钮名称

说明

保存

保存数据集到默认路径。

另存为

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

视图

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

定义多重表头

对SQL查询的表头进行修改添加,形成多重表头。

参数布局

调整参数在SQL查询对应的报表中的位置。

Excel模板设置

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

高级设置

用于设置当前数据集的缓存策略。

预览数据

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

数据抽取

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

4、存储过程要求

4.1 前提条件

在Smartbi中使用存储过程的前提条件是:存储过程必须有结果集返回。注意:Oracle是通过输出参数作为结果集返回的。存储过程的OUT参数只支持游标类型,而且只支持单个输出参数。

4.2 调用方法说明

在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(?,?)}")

4.3 数据库权限要求

数据库类型

数据库权限要求

Teradata

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

Oracel、DB2等其他数据库

要求连接用户必须具有调用getProcedureColumns和Call方法的权限。

  • No labels