java

位置:IT落伍者 >> java >> 浏览文章

在Java中调用Oracle包中的过程


发布日期:2019年10月09日
 
在Java中调用Oracle包中的过程

先在oracle中编写测试过程

首选建一个测试表

Create table

create table BOOK

(

BOOKID VARCHAR() not null

BOOKNAME VARCHAR() not null

PUBLISHER VARCHAR() not null

PRICE VARCHAR() null

)

编写ORACLE测试过程

CREATE OR REPLACE PACKAGE pkg_test

AS

TYPE myrctype IS REF CURSOR;

PROCEDURE get (p_id VARCHAR p_str OUT VARCHAR p_rc OUT myrctype);

END pkg_test;

/

CREATE OR REPLACE PACKAGE BODY pkg_test

AS

PROCEDURE get (p_id VARCHAR p_str OUT VARCHARp_rc OUT myrctype)

IS

sqlstr VARCHAR ();

BEGIN

p_str := Hellomay~;

IF p_id = all THEN

OPEN p_rc FOR

SELECT *

FROM BOOK;

ELSE

sqlstr :=

select *

from BOOK where BOOKID=:w_id;

OPEN p_rc FOR sqlstr USING p_id;

END IF;

END get;

END pkg_test;

/

在这里我们建立了一个输入参数为普通类型两个输出参数其中一个为普通VARCHAR另一个为特殊的记录集类型

(注在数据库端测试一下这个过程以确保没有问题开始下面的操作~

编写JAVA代码测试过程

/*

* 创建日期:

*/

package JDBC;

/**

* 作者:may

* 时间:::

*/

import javasql*;

import oraclejdbcdriver*;

public class proctest {

public static void main(String[] args) {

proctest pc = new proctest();

pcShowContent();

}

String sDBDriver=oraclejdbcdriverOracleDriver;

String sConnStr=jdbc:oracle:thin:@::ORADB;

Connection connect=null;

ResultSet rs = null;

public proctest(){

try{

ClassforName(sDBDriver);

}

catch(ClassNotFoundException e){

Systemerrprintln(egetMessage());

}

}

public ResultSet ShowContent()

{

try{

connect = DriverManagergetConnection(sConnStrSHUIBJSHUIBJ);

CallableStatement stmt = connectprepareCall({call PKG_TESTGET(???)});

stmtsetString(all); //输入参数

stmtregisterOutParameter(TypesCHAR); //输出参数为普通参数

stmtregisterOutParameter(OracleTypesCURSOR); //输出参数为结果集参数

stmtexecuteQuery();

rs = ((OracleCallableStatement) stmt)getCursor(); //得到输出结果集参数

ResultSetMetaData rsmd = rsgetMetaData();

int numberOfColumns = rsmdgetColumnCount();

String str = stmtgetString();

Systemoutprintln(第二个参数为:+str);

Systemoutprintln(结果集列数+numberOfColumns);

//列出结果集中的记录

ResultSetMetaData md = rsgetMetaData();

int nColumns = mdgetColumnCount();

for (int i=;i<=nColumns;i++){

Systemoutprint(mdgetColumnName(i)+((i==nColumns)?\n:\t));

if(i==) Systemoutprint(\t);

}

while (rsnext()){

for(int i=;i<=nColumns;i++){

Systemoutprint(rsgetString(i)+((i==nColumns)?\n:\t));

}

}

}

catch(SQLException ex){

Systemerrprintln(exgetMessage()+连数据库有问题!);

}

return rs;

}

}

输出结果为

第二个参数为:Hellomay~

结果集列数

BOOKIDBOOKNAMEPUBLISHERPRICE

jsp 应用开发详解电子工业出版社

uml参考手册机械工业出版社

               

上一篇:一个JAVA连接ORACLE的例子

下一篇:Java开发中使用Oracle数据库的注意事项