birt 执行oracle存储过程,birt调用存储过程.doc

41528d3028836879cd698677c3999917.gifbirt调用存储过程.doc

1在BIRT百灵报表中使用存储过程作者MWU关键字BIRT百灵报表,存储过程,JDBC,数据集,游标,输入参数,输出参数版本控制VERSIONDATEDESCRIPTIONOFCHANGESDRAFT1JUN102008FIRSTDRAFT请访问下列链接获取本文最新版本HTTP//WWWACTUATECHINACOM/THREAD58HTMLPOST363WWWACTUATECHINACOM2目录1概述22BIRT支持的存储过程返回值类型23BIRT调用存储过程的语法24创建存储过程数据源/集25在BIRT中使用存储过程21调用返回单结果集的存储过程。22调用一个含有参数的存储过程,并且有输出参数。23调用含有RETURN参数的存储过程24调用返回游标的存储过程25调用返回多个结果集的存储过程26参考文档和资源2WWWACTUATECHINACOM31概述存储过程和函数都是包含了一系列的SQL语句的集合体。通常来说,存储过程可以用来执行一系列的操作或是调用某些函数去计算一个值。因此,我们可以把存储过程看作是一个无返回值的方法调用,而函数则可以看作是一个有返回值的方法调用。由于各个关系型数据库对存储过程支持程度的差别,以及输出结果返回方式的不同,用户需要有一个通用的方式来访问存储过程。BIRT百灵报表提供了一个简单,易用的方式来支持对存储过程数据的获取,方便的让用户将存储过程作为数据源来定制自己的报表。本文演示了如何使用BIRT230创建存储过程数据源。2BIRT支持的存储过程返回值类型BIRT支持5种类型的存储过程返回值1单结果集结果集通常是通过使用SELECT语句选择数据产生的。结果集可以从永久表,临时表或者局部变量中产生。2输出参数输出参数经常用来从存储过程中检索出的结果。输出参数可以是整型,或是字符型等数据类型。3RETURN参数返回状态这是一种从存储过程返回错误码的方法。存储过程会返回一个整型的状态值。用户可以使用RETURN语句返回自己的状态。4游标某些DBMS允许从存储过程中返回游标的一个引用,JDBC并不支持这个功能,但是ORACLE,POSTGRESQL和DB2等都支持这种返回类型。我们同样可以通过BIRT来访问这些数据类型。5多数据集这种结果是指返回结果包含多个结果集或游标。WWWACTUATECHINACOM43BIRT调用存储过程的语法JDBCAPI提供了一套存储过程SQL转义语法,该语法允许对所有的关系型数据库使用标准方式调用存储过程。它的调用方式有两种,一种是带有返回值的调用,另一种是不含返回值的调用{CALL,,}{CALL,,}在BIRT中,所有的对存储过程的调用遵循JDBC30规范。所以以上语法适用于BIRT,在这里参数可以用占位符或者是默认值来代替。4创建存储过程数据源/集创建存储过程数据源的过程如下1创建一个JDBC的数据源。2当创建数据源时,选择SQL存储过程数据类型。3建立存储过程查询语句。如图所示WWWACTUATECHINACOM55在BIRT中使用存储过程本章讨论如何在BIRT里使用不同类型的存储过程返回结果。在示例1,2,3中用到的数据库是SYBASE数据库,示例中用的的表是CUSTOMERS表,它记录了所有用户的信息。由于SYBASE不支持游标,所以在示例4,5中,我们将使用到ORACLE数据库。在存储过程4中,我们会调用到OFFICES表,通过游标来返回该表的所有信息。在示例5中,我们会调用到CUSTOMERS表。对该表进行若干次的查询定义来返回多个结果集。1调用返回单结果集的存储过程。示例1存储过程定义如下该存储过程返回CUSTOMERS表中的所有记录。使用BIRT调用方法如下调用语句{CALLGET_ALL_CUSTOMERS}下图给出了上述存储过程在BIRT数据集编辑器中的结果CREATEPROCEDUREGET_ALL_CUSTOMERSASSELECTFROMCUSTOMERSGOWWWACTUATECHINACOM62调用一个含有参数的存储过程,并且有输出参数。在存储过程中用户通过输入参数,想选择出满足条件的结果集。比如我们想查找某一ID用户的所有信息。定义的存储过程如下调用语句{CALLGET_CURSOTERMER_BYID,,}CREATEPROCEDUREGET_CURSOTERMER_BYIDIDINT,NAMEVARCHAR50OUTPUT,PHONEVARCHAR50OUTPUTASSELECTNAMECUSTOMERNAME,PHONEPHONEFROMCURSTOMERSWHERECUSTOMERNUMBERIDGOWWWACTUATECHINACOM7在“参数”项里,我们可以看到BIRT会自动列出来的所有的参数。用户只需填入输入参数的默认值,就可以直接预览结果了。在某些特殊情况下,由于数据库驱动驱动/数据连接的一些内部问题而无法正确获取参数列表,用户也可以手动添加所需用到的参数,也一样可以达到相同效果。3调用含有RETURN参数的存储过程在2中,我们同样可以得到该存储过程的RETURN参数。调用语句{CALLDBOGET_CURSOTERMER_BYID,,},这里和2中唯一的不同是,在“参数”页面中,可以看到自动增加了一个“RETURN_VALUE”的参数,一般情况下,如果用户需要调用函数,则可以通过这种方式获取函数的返回值。4调用返回游标的存储过程并不是所有的DBMS都支持游标类型。这里我们用ORACLE数据库中的存储过程为例。在ORACLE中我们创建存储过程实例如下由于JDBC标准中,并没有支持游标这一数据类型,因此,我们对游标类型是以JAVASQLTYPESOTHERS类型来处理。对于上面的这个存储过程,我们调用过程如图所示CREATEORREPLACEPAGKAGETESTPACKAGEASTYPETEST_CURSORISREFCURSORENDTESTPACKAGECREATEORREPLACEPROCEDURETESTLIN2TEST_CUSROROUTTESTPACKAGETEST_CURSORASBEGINOPENTEST_CURSORFORSELECTFROMOFFICESENDTESTLIN2WWWACTUATECHINACOM85调用返回多个结果集的存储过程存储过程实例如下WWWACTUATECHINACOM9调用语句为{CALLTESTMULTIPLE,,,,}CREATEORREPLACEPROCEDURETESTMULTIPLEP_CUSTOMERNUMBERINNUMBER,P_CUSTOMERCURSOR1OUTSYS_REFCURSOR,P_CUSTOMERCURSOR2OUTSYS_REFCURSOR,P_CUSTOMERNAMEOUTVARCHAR2,P_COUNTRYOUTVARCHAR2ASBEGINOPENP_CUSTOMERCURSOR1FORSELECTFROMCUSTOMERSWHERECUSTOMERNUMBERP_CUSTOMERNUMBERSELECTCOUNTRYINTOP_COUNTRYFROMCUSTOMERSWHERECUSTOMERNU

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值