一.方法描述
主要是间接调用function .该function的返回值是一个自定义类型的内存表。在birt中如下调用:select * from function_name(?,?.....);
二.例子如下:
(1)
数据库中有如下一张表:
表名:users
字段:id,name
(2)
首先创建一个type;
create
or replace type t_test as object(
id varchar( 10 ),
name varchar2( 60 )
);
id varchar( 10 ),
name varchar2( 60 )
);
(3)
创建一个以上一步创建的type为基类型的内存表类型如下:
create
or replace type t_test_table as table of t_test;
(4)
创建如下的一个存储过程:
create
or replace function testbirt2 return
t_test_table
as
t t_test_table:=t_test_table();
cursor mycursor is
select id,name
from users;
uid varchar( 10 );
uname users.name%type;
begin
open mycursor;
loop
fetch mycursor
into uid,uname;
exit when mycursor%notfound;
t.extend();
t(t.count) := t_test(uid,uname);
end loop;
close mycursor;
return t;
end testbirt2;
t_test_table
as
t t_test_table:=t_test_table();
cursor mycursor is
select id,name
from users;
uid varchar( 10 );
uname users.name%type;
begin
open mycursor;
loop
fetch mycursor
into uid,uname;
exit when mycursor%notfound;
t.extend();
t(t.count) := t_test(uid,uname);
end loop;
close mycursor;
return t;
end testbirt2;
(5)
在birt中如下调用:
Select * from table(testbirt2);
三.即可预览到结果集。此例子相当简单,只是为了证明birt如此调用的可行性。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/8677,如需转载请自行联系原作者