您的位置:首页 > 编程语言 > Java开发

java jdbc 调用db2存储过程 第一节

2011-12-23 11:20 531 查看
转载请注明出处 :http://blog.csdn.net/dongguang1082

最近项目中要用到db2存储过程,以前也接触过一点,但是一知半解没有用到实际的项目中,趁这个机会深入了解一下下。关于连接db2,可以参照/article/8099163.html

调用无参存储过程

创建存储过程语句如下

创建无参存储过程

CREATE PROCEDURE "PCCCMALL"."testOne" ()

SPECIFIC "SQL110512004935601"

LANGUAGE SQL

NOT DETERMINISTIC

EXTERNAL ACTION

MODIFIES SQL DATA

INHERIT SPECIAL REGISTERS

OLD SAVEPOINT LEVEL

begin

DECLARE member_id varchar(20) DEFAULT 'test';

DECLARE fullname varchar(20) DEFAULT 'test';

FOR v AS cur1 CURSOR FOR

SELECT member_id FROM prod_order where order_status='05'

DO

SET fullname = v.member_id ;

insert into member_basic_info(member_id) VALUES (fullname);

commit;

END FOR;

END

调用语句如下

调用存储过程

String JDBCDriver = "com.ibm.db2.jcc.DB2Driver";

String DbSource = "jdbc:db2://127.0.0.1:50000/test";

Connection conn =null;

CallableStatement cs=null;

try {

Class.forName(JDBCDriver);

conn = DriverManager.getConnection(DbSource, "XXXXX",

"XXXXX");

cs = conn.prepareCall("call testOne()");
cs.execute();

conn.close();
}catch (SQLException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}finally{

if(cs!=null){

try {

cs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(conn!=null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

带有输入参数的存储过程

输入参数存储过程

CREATE PROCEDURE insql (IN inparam varchar(255))

LANGUAGE SQL

BEGIN

DECLARE v_inparam CHAR(3);

SET v_inparam = inparam;

CASE v_inparam

WHEN 'A00' THEN

insert into "TEMP" values('angelo','A00');

WHEN 'B01' THEN

insert into "TEMP" values('angelo','B01');

else

insert into "TEMP" values('fucking_code','B01');

END CASE ;

END ;
调用语句

String JDBCDriver = "com.ibm.db2.jcc.DB2Driver";

String DbSource = "jdbc:db2://127.0.0.1:50000/test";

Connection conn =null;

CallableStatement cs=null;

try {

Class.forName(JDBCDriver);

conn = DriverManager.getConnection(DbSource, "XXXXX",

"XXXXX");

cs = conn.prepareCall("call insql (?)");

cs.setString(1, "A0");
cs.execute();

conn.close();
}catch (SQLException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}finally{

if(cs!=null){

try {

cs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(conn!=null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

带输入和输出参数存储过程

create procedure inoutsql(IN param varchar(255),out outV varchar(255))

language sql

begin

declare v_param varchar(20);

set v_param = param;

CASE param

when 'a' then

set outV = v_param || 'a';

when 'b' then

set outV = v_param || 'b';

else

set outV = v_param || 'c';

END CASE ;

end;
调用语句

String JDBCDriver = "com.ibm.db2.jcc.DB2Driver";

String DbSource = "jdbc:db2://127.0.0.1:50000/test";

Connection conn =null;

CallableStatement cs=null;

try {

Class.forName(JDBCDriver);

conn = DriverManager.getConnection(DbSource, "XXXXX",

"XXXXXX");

cs = conn.prepareCall("call inoutsql(?,?)");

cs.setString(1, "A0");

cs.registerOutParameter(2, Types.VARCHAR);

cs.execute();

String xm = cs.getString(2);

System.out.println("end:"+xm);

conn.close();

}catch (SQLException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}finally{

if(cs!=null){

try {

cs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(conn!=null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

未完待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: