需要注意的是,当在单元格中用call函数调用存储过程时,执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个
数据集的数据来自存储过程。sql语句执行的时候要先编译,然后执行。存储过程就是编译好了的一些sql语句。应用程序需要用的时候直接调用就可以了,所以效率比较高。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和复杂的运算。存储过程可以返回结果集,可以返回参数,也可以同时返回结果集和参数。
存储过程的参数分为输入参数和输出参数两种。输入参数是存储过程执行的条件参数。输出参数类似于返回值,,但是输出参数具有两个重要的优势:可以使用输出参数从存储过程传递出varchar,int,money或任何其他数据类型的值,而返回值则只能返回整数。输出参数的另一个优势就是在一个存储过程中可以有多个输出参数,一个存储过程可以包含1024个参数(其中包括输入和输出参数),但是只能包含一个返回值。
,在调用过程中,其中以oracle的存储过程较为特殊,因为oracle数据库对于存储过程的输出参数有一定要求,需要设置为游标类型,下面就举个例子:
存储过程写法:
create or replace package types as
type rq_ref_cursor is ref cursor;
— procedure getdata( v_temp out types.rq_ref_cursor);
end;
create or replace procedure rq_test_cur
(
v_temp out types.rq_ref_cursor,
pid in varchar
)
as
begin
open v_temp for select name from test where id = pid;
end rq_test_cur;
– create table
create table test
(
id varchar2(10) not null,
name varchar2(10)
)
tablespace users
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64k
minextents 1
maxextents unlimited
);
– create/recreate primary, unique and foreign key constraints
alter table test
add constraint test_pk unique (id)
using index
tablespace users
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64k
minextents 1
maxextents unlimited
);
在报表中数据集的设置:
数据集中参数的设置:
报表参数的设置:
报表模版设计:
需要注意的是,当在单元格中用call函数调用存储过程时,执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个字段,则返回第一个字段的结果值。