能否将Oracle存储过程作为Oracle OBIEE物理表的数据源?
Oracle BI Administration Tool 中“Stored Proc”物理表的正确用法
核心要求
Oracle BI 不支持通过DBMS_SQL.RETURN_RESULT隐式返回结果集的存储过程,必须使用显式OUT参数返回SYS_REFCURSOR的格式,这是OBIEE识别存储过程结果集的标准方式。
正确的存储过程编写
替换你现有的存储过程为以下格式:
CREATE OR REPLACE PROCEDURE BISAMPLE.RESULT_P (p_out_cursor OUT SYS_REFCURSOR) AUTHID DEFINER AS BEGIN OPEN p_out_cursor FOR SELECT NAME , INCOME_LVL FROM BISAMPLE.SAMP_CUSTOMERS_D; END; /
RPD 配置步骤
- 创建物理表,将源类型设置为
Stored Proc - 在“调用文本”输入框中,填写符合JDBC调用格式的语句:
这里的{call BISAMPLE.RESULT_P(?)}?是占位符,对应存储过程的OUT游标参数 - 确保物理表的列(名称、数据类型)与存储过程游标返回的列完全匹配(例如你的物理表列
Name对应游标中的NAME,Income对应INCOME_LVL) - 给连接池使用的数据库用户授予存储过程的执行权限:
GRANT EXECUTE ON BISAMPLE.RESULT_P TO [你的OBIEE连接用户];
失败原因说明
DBMS_SQL.RETURN_RESULT是Oracle 12c+引入的隐式返回结果集特性,但OBIEE的Stored Proc数据源并未适配这种方式,仅支持通过显式OUT游标参数返回结果集的存储过程。
内容的提问来源于stack exchange,提问作者janek_kos
相关产品推荐
相关产品推荐

