一先在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参考手册机械工业出版社