cognos使用存储过程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1)创建自定义类型包

create or replace package cc11.pkg_my_types is

-- Author : SONGJIE

-- Created : 2008-9-18 14:42:08

-- Purpose : 自定义的类型

-- Public type declarations

type cursorType is ref cursor; --定义游标结果集

end pkg_my_types;

2)创建返回结果集的函数

create or replace function cc11.f_get_cur_result(intID NUMBER ) return cc11.pkg_my_types.cursorType IS rc cc11.pkg_my_types.cursorType;

sqlstr VARCHAR2 (500);

BEGIN

if intID=0then

--静态测试,直接用select语句直接返回结果

open rc for select prod_id,created_date,state,block_reason from cc11.prod;

else

--动态sql赋值,用:w_id来申明该变量从外部获得

sqlstr := 'select prod_id,created_date,state,block_reason from cc11.prod where prod_id>:aa';

--动态测试,用sqlstr字符串返回结果,用using要害词传递参数

open rc for sqlstr using intid;

end if;

return rc;

END f_get_cur_result;

3)创建返回结果集的存储过程

create or replace procedure p_test_get_prod(initID number ,rc out cc11.pkg_my_types.cursorType ) as

sqlstr VARCHAR2 (500);

begin

if initID=0then

open rc for select prod_id,created_date,state,block_reason from cc11.prod;

else

sqlstr:='select prod_id,created_date,state,block_reason from cc11.prod where prod_id>:aa';

open rc for sqlstr ;

end if;

end;

4)在sqlplus中用存储过程回显结果集的方法:

var iable cc refcursor // var cc refcursor

exec cc11.p_test_get_prod(0,:cc)

print cc

--注意:此存储过程的方法不能在pl/sql Developer 中实现

5)用函数回显结果集的方法

select pkg_test_get_prod.get(0) from dual

select cc11.f_get_cur_result(100) from dual;

6)在cognos中以存储过程作为数据源来生成报表

重点:数据源的属性要改设置(设置成下图所示的结果)

(说明:cognos创建报表的其他操作步骤这里不作详细的说明,重点是指出需要引起注意的配置问题)

说明:

Query Processing 和 Rollun Processing要改成 Local选项,否则发布模型时会报错(如下)

注意以下文字

测试的例子:

包的路径

生成的报表:get_prod_from_procedure

相关文档
最新文档