您的位置:首页 > 数据库 > Oracle

oracle存储过程打包,以及在java代码中的调用

2011-07-01 13:06 489 查看
oracle存储过程打包,简单实例如下:

WHENEVER SQLERROR CONTINUE;
DROP PUBLIC SYNONYM cab_pkg_setup;

WHENEVER SQLERROR EXIT SQL.SQLCODE

//包头
CREATE OR REPLACE PACKAGE cab_pkg_setup IS -- Global Variables
type ref_cursor IS ref CURSOR;//全局游标

//在包头中声明存储过程,包括输入参数和输出参数
PROCEDURE prc_select_emailaddresslist(branchcode IN VARCHAR2,   emailaddresslist_cursor OUT cab_pkg_setup.ref_cursor);

END cab_pkg_setup;

//包体
CREATE OR REPLACE PACKAGE BODY cab_pkg_setup IS

/*
Description:
The procedure is used to select all the email addresses
Input parameters
branchcode:
Output parameters (resultInfo)
emailaddresslist_cursor:
Change Log
#      NAME               DATE         REASON (Start and End source code change with #)
-      ----               ----         ------------------------------------------------
*/

//具体的存储过程
PROCEDURE prc_select_emailaddresslist(branchcode IN VARCHAR2,   emailaddresslist_cursor OUT cab_pkg_setup.ref_cursor) AS
BEGIN

//打开游标
OPEN emailaddresslist_cursor FOR
SELECT id,
emailaddress,
appname,
success,
fail,
tocc,
created_date,
created_by,
updated_date,
updated_by,
branchcode

FROM cab_emailaddresses
WHERE branchcode = prc_select_emailaddresslist.branchcode
ORDER BY emailaddress;

END prc_select_emailaddresslist;

END cab_pkg_setup;
/

CREATE PUBLIC SYNONYM cab_pkg_setup FOR cab_pkg_setup;


在java代码中调用如下:

//此处不是preparestatement
CallableStatement statement = null;

String databaseSrc = CabDAOConstants.DB_NAME;
con = GenConnectionPool.getConnection(databaseSrc);
//调用存储过程:包名.存储过程名
statement = con.prepareCall("{call cab_pkg_setup.prc_select_taskparalist(?,?)}");

//填充参数
statement.setString(1, inBranchCd);
statement.registerOutParameter(2, OracleTypes.CURSOR);
statement.execute();

//获得游标中的结果集
rs=(ResultSet)statement.getObject(2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐