存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象, 在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。
|
1、如果模型原先是直连模式,增加了存储过程查询,会强制变成抽取模式;详情可查阅: 直连&抽取 2、如果存储过程有参数,并且需要在报表层通过参数切换显示数据,可参考参数管理进行参数映射 |
示例说明:用户创建一个名为“FindCustomer”存储过程,用它来找出数据库Customer表中的ContactName;
以产品自带northwind数据库创建存储过程FindCustomer,如下图:
1.需要先在Smartbi系统中的数据连接中对所需数据库进行数据库管理,选择所需的存储过程资源:
2. 对所选存储过程进行管理,“存储过程管理”窗口中通过 自动检测 和 检测结果集 按钮分别检测出相关的参数和获取存储过程的结果集,详细可参考:存储过程数据集
3. 点击【确定】在资源树上会看到该存储过程已经有结果集了:
创建数据模型,并添加“存储过程查询”:
|
下面的说明只是让技术人员了解不同类型的数据库的调用方法和检测结果集! |
数据库类型 | 存储过程获取参数 |
---|---|
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(...) |
数据库类型 | 存储过程执行过程 |
---|---|
Teradata | 调用下面语句执行宏: |
大部分数据库比如:mySQL、SQL Server、 Oracel、DB2等其他数据库 | 调用JDBC中的标准方法: |