1 概述
【存储过程】就是存储在数据库中的一组 SQL 语句集。Smartbi 的数据模型支持调用数据库中的存储过程,从而获得执行了存储过程 SQL 语句集后的表。
2 示例
比如用户想创建一个名为“FindCustomer”存储过程,可以用它来找出数据库Customer表中的ContactName;
...
- 必须确保在“存储过程管理”窗口中通过 自动检测 和 检测结果集 按钮分别检测出相关的参数和结果集,资源区才会出现可选资源。 按钮分别检测出相关的参数和结果集,左侧资源区才会出现可选资源。
- 点击【预览】图标,可预览根据默认值查询的数据
- 点击【保存】并回到模型修改数据类型、修改别名、设置与其他查询的关系或者参考构建数据模型。
...
信息 |
---|
存储过程只支持抽取模式! 1.如果模型原先是直连模式,增加了存储过程查询,会强制变成抽取模式 2.如果存储过程查询有参数,需要在报表层切换参数展示数据,建议“按次抽取” |
3 使用存储过程的要求
1)在Smartbi中存储过程检测参数的调用方法如下:
数据库类型 | 存储过程获取参数 |
---|---|
Teradata | Teradata JDBC接口没有直接提供获取宏参数和字段的方法,所以是通过执行以下SQL语句数据集获得参数的: SELECT C.* FROM DBC.TABLES T, DBC.COLUMNS C T.DATABASENAME=? AND T.TABLENAME=? AND T.TABLEKIND='M' AND T.DATABASENAME=C.DATABASENAME AND T.TABLENAME=C.TABLENAME |
大部分数据库比如:mySQL、SQL Server、 Oracel、DB2等其他数据库 | 调用JDBC中的标准方法: connection.getMetaData().getProcedureColumns(...) |
2)在Smartbi中存储过程检测结果集的调用方法如下:(检测结果集:在前端弹出界面让用户输入参数后,真正的执行一次存储过程而获得输出字段。)
数据库类型 | 存储过程执行过程 |
---|---|
Teradata | 调用下面语句执行宏: |
大部分数据库比如:mySQL、SQL Server、 Oracel、DB2等其他数据库 | 调用JDBC中的标准方法: |
3)数据库权限要求
数据库类型 | 数据库权限要求 |
---|---|
Teradata | 要求连接用户必须具有访问DBC.TABLES、DBC.COLUMNS的权限,及调用Exec方法的权限。 |
大部分数据库比如:mySQL、SQL Server、 Oracel、DB2等其他数据库 | 要求连接用户必须具有调用getProcedureColumns和Call方法的权限。 |