日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 操作cursor数据库_Java连接各种数据库以及调用存储过程

發布時間:2024/9/27 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 操作cursor数据库_Java连接各种数据库以及调用存储过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

準備工作:

1. 創建表

drop table T_TEST_PROCEDURE cascade constraints;

/*==============================================================*/

/*

Table: T_TEST_PROCEDURE

*/

/*==============================================================*/

create

table T_TEST_PROCEDURE (

ID

NUMBER(19) not null,

NAME

VARCHAR2(40),

AGE NUMBER(3),

constraint

PK_T_TEST_PROCEDURE primary key (ID)

);

2. 創建存儲過程

無返回值的存儲過程

CREATE OR REPLACE PROCEDURE

proctest (

ID IN NUMBER,

NAME IN VARCHAR2,

age

IN NUMBER

)

AS

BEGIN

INSERT INTO

t_test_procedure

(ID, NAME, age

)

VALUES (ID, NAME, age

);

END

proctest;

/

有非列表返回值的存儲過程

CREATE OR REPLACE PROCEDURE

proc_returnnolist (

p_id IN INTEGER,

p_name OUT

VARCHAR2,

p_age OUT INTEGER

)

AS

BEGIN

SELECT NAME,

age

INTO p_name, p_age

FROM t_test_procedure

WHERE ID =

p_id;

END proc_returnnolist;

/

返回結果集的存儲過程

要返回結果集,需要使用Oracle的package

CREATE OR REPLACE PACKAGE

test_proc_package

AS

TYPE testproccursor IS REF CURSOR;

END

test_proc_package;

存儲過程

CREATE OR REPLACE PROCEDURE

proc_returnlist (

testproccursor OUT

test_proc_package.testproccursor

)

AS

BEGIN

OPEN

testproccursor

FOR

SELECT *

FROM

t_test_procedure;

END proc_returnlist;

/

用Java調用存儲過程

1. 調用無返回值的存儲過程

CallableStatement callableStmt =

con

.prepareCall("{call

proctest(?,?,?)}");

callableStmt.setInt(1,

2);

callableStmt.setString(2, "Stephen");

callableStmt.setInt(3,

27);

callableStmt.execute();

callableStmt.close();

System.out.println("Success");

2. 調用返回非列表的存儲過程

CallableStatement callableStmt =

con

.prepareCall("call

proc_returnnolist(?,?,?)");

callableStmt.setInt(1,

3);

callableStmt.registerOutParameter(2,

Types.VARCHAR);

callableStmt.registerOutParameter(3,

Types.INTEGER);

callableStmt.execute();

String name =

callableStmt.getString(2);

int age = callableStmt.getInt(3);

callableStmt.close();

System.out.println("name:" + name + " age:" +

age);

3. 調用返回結果集的存儲過程

CallableStatement callableStmt =

con

.prepareCall("call

proc_returnlist(?)");

callableStmt.registerOutParameter(1,

OracleTypes.CURSOR);

callableStmt.execute();

ResultSet rs =

(ResultSet) callableStmt.getObject(1);

while (rs.next())

{

System.out.println("name:" + rs.getString("name") + "

age:"

+

rs.getInt("age"));

}

rs.close();

callableStmt.close();

總結

以上是生活随笔為你收集整理的java 操作cursor数据库_Java连接各种数据库以及调用存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。