Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

Verwendung eines Ref Cursor als Datenquelle im Oracle BI Publisher

leave a comment »

In der Praxis gibt es gelegentlich die Anforderung, innerhalb der SQL-Query eines BI Publisher-Reports einen Referential Cursor (Ref Cursor) in der Datenbank zu verwenden.
Dabei ist es möglich, dass der Ref Cursor eine einzelne oder mehrere Zeilen zurückgibt.

Es folgt ein Beispiel für einen Ref Cursor, der eine einzelne Zeile zurückgibt:
In der Oracle-Datenbank wird eine Funktion REF_CURSOR_CUST im Schema OE angelegt.

create or replace function REF_CURSOR_CUST (p_customer_id IN number)
return SYS_REFCURSOR as
TYPE t_cursor is REF CURSOR;
v_cursor t_cursor;
begin
open v_cursor FOR
select customer_id, cust_first_name, cust_last_name, credit_limit,
cust_email, gender, income_level
from customers
where customer_id = p_customer_id;
RETURN v_cursor;
end REF_CURSOR_CUST;

Im Datenmodell des BI Publisher-Berichtes kann der Ref Cursor innerhalb der Query verwendet werden:
select ref_cursor_cust(:cust_id) from dual

Sollte die Abnfrage keine Datensätze zurückliefern, so kann dies an einem kleinen Bug (zumindest in 10.1.3.3.1) liegen. Der einfache Workaround besteht darin, ein weiteres Attribut der Select-Liste hinzuzufügen:
select null, ref_cursor_cust(:cust_id) from dual

Ein Beispiel, das mehrere Zeilen zurückliefert, funktioniert auf ähnliche Weise:
In der Oracle-Datenbank wird eine Funktion REF_CURSOR_DEPT im Schema OE angelegt.

create or replace function REF_CURSOR_DEPT (p_deptno IN number)
return SYS_REFCURSOR as
TYPE t_cursor is REF CURSOR;
v_cursor t_cursor;
begin
open v_cursor FOR
select * from employees
where department_id = p_deptno;
RETURN v_cursor;
end REF_CURSOR_DEPT;

Der Ref Cursor kann nun in der Query des BI Publisher-Berichts verwendet werden:
select null, ref_cursor_dept(:deptno) from dual
Die Abfrage wird eine bestimmte Zahl von Zeilen in Abhängigkeit vom Parameter deptno zurückliefern, der vor der Ausführung des Berichtes auszuwählen ist. <JM>

Written by fmtechteam

04/10/2008 um 18:16

Veröffentlicht in BI Publisher, Jürgen Menge

Tagged with ,

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: