在this link IBM中,他们解释了如何将Oracle存储过程与COGNOS一起使用。
他们正在做:
create or replace package body project_pk as
procedure project_sp (tproj IN numeric, result1 in out project_type1) is
begin
open result1 for
select projects.projectid, projects.projecttype
from projects
where projects.projecttype=tproj;
end;
end;
/
使用open result1 for
,他们会显式打开游标。但是,他们似乎并没有关闭它。这是为什么?
答案 0 :(得分:0)
您必须将resuly设置为Cognos。如果你关闭光标,那么也有重新定位,对吧?
一旦完成从SP中提取数据,Cognos就有责任关闭光标。
为了让您100%确定是这种情况,请查看此链接(完全与Cognos无关):
Returning result Sets from SQL Server and Oracle
但是,您在链接中提供的示例看起来相当复杂。这是我正在使用的:
CREATE OR REPLACE PROCEDURE "COGNOS_SP" (
case_id in numeric,
po_refcur out sys_refcursor) is
BEGIN
open po_refcur for
select * FROM CASES WHERE CASE_ID = case_id;
END COGNOS_SP;