除了常用的SQL检索数据集和复杂SQL数据集,还可以建立存储过程、TXT文件、XML文件、内建数据集、自定义数据集、集算数据集等。 # 存储过程 存储过程就是编译好了的一些sql语句。应用程序需要用的时候直接调用就可以了,所以效率比较高。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和复杂的运算。存储过程可以返回结果集,可以返回参数,也可以同时返回结果集和参数。 存储过程的参数分为输入参数和输出参数两种。输入参数是存储过程执行的条件参数。输出参数类似于返回值,但是输出参数具有两个重要的优势:可以使用输出参数从存储过程传递出VarChar,Int,Money或任何其他数据类型的值,而返回值则只能返回整数。输出参数的另一个优势就是在一个存储过程中可以有多个输出参数,一个存储过程可以包含1024个参数(其中包括输入和输出参数),但是只能包含一个返回值。 **举例:带有输入和输出参数的存储过程** 存储过程: >create or replace procedure EMP2(a in varchar, b out SYS_REFCURSOR) is aa varchar2(100); V_SQL VARCHAR2(1000); begin aa:=a; V_SQL:='select * from demo_EMPLOYEE where 雇员ID in ('||aa||')'; open b for V_SQL; end EMP2; 数据管理根目录-新建数据集-存储过程,进入存储过程数据集界面,如下图所示: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_16e001c9acd3947d5896d281e9f44161_r.png) 参数的顺序必须与问号的顺序保持一致,并指定参数模式。 >**注意:** 存储过程可以没有输出参数,但是如果你的存储过程是将结果集返回给一个参数,则需要在配置-参数里定义该参数,并指定该参数的“参数模式”为“输出参数”。这个时候,如果你的数据库正好是oracle,则还需要将这个输出参数的结果类型设置为“游标”。 # 内建数据集 内建数据集是指数据集的结构和数据都存入报表模板,运算报表的时候不需要从数据源取数了。可以使用户快速的体验建立报表的过程,用户只需在报表设计器中定义一个内建数据集,录入一些数据就可以在报表中使用了,这样给用户的体验过程带来了极大的方便。也可以用于报表的跟踪调试,当报表预览结果和您预想的结果不符合时,可以把数据集转为内建,然后把报表模板发给技术支持人员,方便支持人员跟踪调试。 需要注意的是,内建数据集暂不支持参数过滤。 # TXT文件 表示该数据集的数据来自TEXT文件,此时编辑的时候直接按照TXT文件格式编辑即可,也可以直接导入TXT文件。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_3e2ae5414a4899cd03d711f652c4b5e5_r.png) **TXT文件的编辑格式如下:** - 第一行为列名定义,第二行为列的数据类型定义,第三行开始是数据。 - 其中第一行和第二行都可以省略,如果省略列名定义,那么表达式里引用列时用dsn.#n的方式,n代表列号;如果省略列数据类型定义,那么数据类型全部默认为字符型。 数据类型的定义采用java.sql.Types里的标准定义。 - 列间分隔符为TAB键,即\t,行间分隔符为回车键,即\n。 **TXT数据集示例** 下面是一个省略了第二行数据类型定义的例子,如下图所示: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_b39b0579582da5bfd1e2c0e2be0e0012_r.png) # XML文件 数据集如果是XML文件类型,此时编辑的时候直接按照xml文件格式编辑即可,也可以直接导入XML文件。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_4335c6340de8ccdcd0851bfd6deffed1_r.png) **XML文件的编辑格式如下:** - 根节点为ROWS。 - 根节点下第一个节点为列名定义,第二个节点为列的数据类型定义,第三个节点开始是数据。 - 列名和列的数据类型都可以不定义,如果省略列名定义,那么表达式里引用列时用dsn.#n的方式,n代表列号;如果省略列数据类型定义,那么数据类型全部默认为字符型。 数据类型的定义采用java.sql.Types里的标准定义。 - 一行数据为一个ROW节点定义。 注意:xml数据集文件中的内容要求无空格且必须在一行。 下面是一个只有两个字段的例子,如下图所示: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_d40965237a4e544c96ff7d5e5de0ca14_r.png) # 自定义数据集 如果报表的数据来源比较特殊,需要程序员自己处理,可以采用自定义数据集的方式,此时选择数据集的类型为自定义,然后在编辑界面中输入类名和需要用到的参数。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_b8e33fbf5ed30cf6ca1a4d26f15aed7d_r.png) 需要注意的是,自定义数据集的类文件需要手动放在应用程序里: 1.自定义数据集的类文件所在的包,放在\WEB-INF\classes文件夹下; 2.自定义数据集类中定义的数据集名与V5中新建的自定义数据集名需保持一致。