首先我们以一个简单的例子开始,在这个例子中,只存在一个返回值。存储过程如下
SQL> create or replace procedure lizhe (aa out varchar2)is
begin
select password into aa from passport where id='123111';
end lizhe;
/
补充说明:要注意的是这个存储过程存在一个(aa out varchar2)这样的标识,这是一个参数,out表示这是一个输出参数,在select语句中将password的值“into”到这个参数里
然后再java端:
public static void runProcedure(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.159:1521:TOPS","YAC3","YAC3");
java.sql.CallableStatement cs = con.prepareCall("{call lizhe(?)}");
cs.registerOutParameter(1, java.sql.Types.VARCHAR);
cs.execute();
System.out.print("value2:" + cs.getString(1)); //取出字符串——关键
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
补充说明:cs.registerOutParameter(1, java.sql.Types.VARCHAR);
重点只有这一句
2.多个返回值的
SQL> CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
/
Package created
SQL> CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR 'SELECT * FROM TB';
END TESTC;
/
Procedure created
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;
public class TestProcedure {
public TestProcedure() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@192.168.0.159:1521:tops";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "yac3", "yac3");
CallableStatement proc = null;
proc = conn.prepareCall("{call testc(?)}");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.executeQuery();
rs = (ResultSet)proc.getObject(1);
while(rs.next())
{
System.out.println(rs.getString("VALUE"));
}
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}
分享到:
相关推荐
JDBC调用oracle存储过程
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
jdbc连接oracle,执行存储过程,带数据库存储过程,代码是详细的源码,读取配置文件,连接jdbc,执行存储过程。
jdbc 存储过程 java 程序 JDBC 调用存储过程方法
java调用oracle存储过程入门实例 增删改查 使用dom4j读取数据库的配置文件(xml) jdbc中connection的管理 使用threadlocal
用JDBC操作Oracle的存储过程返回值
jdbc调用存储过程 函数例子
JDBC存储过程的调用
这是用JBuilder做的一个简单的例子, 用java代码调用存储过程,实现增删改查。
JDBC调用MySQL5存储过程[文].pdf
使用jdbc调用存储过程的代码示例 调用数据库连接池
使用Oracle数据库实现了jdbc调用存储过程进行增加数据、删除数据、修改数据、查询全部数据、查询单个数据
本例是我工作中的一些实操例子,亦是我工作日志,记录在此,既可作为我自己的总结,也可以此分享给同行借鉴。 入参是字符串格式的xml,目的...3.JDBC调用存储过程语句 4.创建Groovy脚本 5.xml入参示例 6.json出参示例
主要介绍了Java使用Jdbc连接Oracle执行简单查询操作,结合实例形式详细分析了java基于jdbc实现Oracle数据库的连接与查询相关操作技巧,需要的朋友可以参考下
oracle 对于高级特性总是与众不同(我极力讨厌这一点,如果使用它的产品就要对这种产品进行特定的编程,这也是我从不看好weblogic之类的平台的原因),大对象存取一要定用它
使用java通过jdbc访问Oracle数据库,并完成简单的连接登录,增删改查等功能,适合初学者进行参考学习的小demo代码。
本工程用于JDBC如何实现对存储过程的调用 本工程编码方式:GBK 参考博客网址:http://blog.csdn.net/gaohuanjie/article/details/34422903 须执行的SQL语句: CREATE DATABASE `test`; USE `test`; CREATE TABLE...
使用JDBC连接Oracle数据库使用JDBC连接Oracle数据库
从远程oracle数据库取数据是乱码,因为远程oracle字符集为AMERICAN_AMERICA.US7ASCII 本地oracle字符集为SIMPLIFIED CHINESE_CHINA.ZHS16GBK 所以是乱码,解决办法请下载文档 多谢 因为要下载其他资源无分 多多...