Java 调用 oracle 存储过程三个实例(看前知识,需要存储过程,jdbc相关一点点)
1.插入,无返回值
oracle 的 procedure 为
create or replace procedure add_project(proid varchar2,
proversion number,
proname varchar2,
customID varchar2 default null) is
begin
insert into T_LPROMIS_XMGL_GBBXMXX pro
(xmid, xmbbh, xmmc,pro.khid)
values
(proid, proversion, proname,customID);
end;
2.查询,有一个out varchar的返回值
oracle 的 procedure 为
create or replace procedure query_project
(proname in varchar2, proid out varchar2)
is
begin
select pro.xmid into proid from T_LPROMIS_XMGL_GBBXMXX pro
where pro.xmmc = proname;
end;
3.查询,有一个out ref cursor的返回值
oracle 的 procedure 为
create or replace package query_project_pck
as
type pro_ref_cursor_type is ref cursor;
type pro_table is table of varchar(100);
type pro_record is record(name varchar(100),id varchar(100));
procedure pro_procedure(name varchar,id varchar);
end query_project_pck; -- define package
create or replace procedure query_pro(pro_result out query_project_pck.pro_ref_cursor_type) is
begin
open pro_result for
select pro.xmid, pro.xmmc,pro.updatetime from T_LPROMIS_XMGL_GBBXMXX pro return pro_record_type;
end; --create procedure using ref cursor
以上为oracle数据库
下面就是jdbc call procedure 了,上代码:
public static void test() throws ClassNotFoundException, SQLException{
System.out.println("=====Test.test=====");
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.32.227:1521:orcl","use","password");
//Connection conn = new Conn().getConnection();
CallableStatement cstmt = null;
ResultSet rs = null;
try{
// 过程调用,无返回值
cstmt = conn.prepareCall("call add_project(?,?,?)");
cstmt.setString(1,"testproject1");
cstmt.setInt(2, 0);
cstmt.setString(3, "super man project");
cstmt.execute();
cstmt.setString(1, "testproject2");
cstmt.setInt(2, 0);
cstmt.setString(3, "a worker project");
cstmt.execute();
cstmt.setString(1, "testproject3");
cstmt.setInt(2, 0);
cstmt.setString(3, "a user project");
cstmt.execute();
System.out.println("插入成功");
cstmt = conn.prepareCall("call query_project(?,?)");
cstmt.registerOutParameter(2,Types.VARCHAR);
cstmt.setString(1, "全网项目");
cstmt.execute();
System.out.println(cstmt.getString(2));
cstmt = conn.prepareCall("call query_pro(?)");
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.execute();
rs = (ResultSet) cstmt.getObject(1);
while(rs.next())
{
System.out.println("id= "+rs.getString(1));
System.out.println("name="+rs.getString(2));
System.out.println("msg="+rs.getString(3));
}
if(!rs.isClosed())
rs.close();
cstmt.close();
conn.close();
}catch(Exception e){
System.out.println("=====Test.test=====\n操作失败");
e.printStackTrace();
}
}
分享到:
相关推荐
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
java调用oracle存储过程入门实例 增删改查 使用dom4j读取数据库的配置文件(xml) jdbc中connection的管理 使用threadlocal
学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下
Oracle后台存储过程中调用Java代码块,以此来访问异构数据库数据(DB2)。 此方式适用场景: 原有业务逻辑均在后台实现,现要加入对异构数据库的数据访问或写入。 异构数据库的访问,多用数据联邦、透明网关或自行...
NULL 博文链接:https://vernonchen163.iteye.com/blog/1902788
本文档演示如何从 Java 存储过程将 JDBC ResultSet 作为 REF CURSOR 返回。JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的...
针对java调用存储过程写的通用封装,oracle,mssql测试通过,附带测试脚本.以前写过一个,感觉不是很好,这个周末就重写了一个,大家多多提意见,是eclipse工程直接跑junit就行了,所有的东西都在里面.除了存储过程也可以...
目的:使用JDBC连接MySQL数据库并且完成增删改查。 介绍:1)一种执行SQL语言的Java API。... 5)jdbc可以直接调用数据库存储过程。 6)jdbc操作数据库的效率很高。 7)学会了jdbc,什么数据库存取数据都会了。
在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。 9、使用Object...
4.2 调用存储过程对象 4.2.1 CallableStatement对象的创建 4.2.2 IN、OUT及INOUT参数的使用 4.2.3 执行CallableStatement Object对象 4.2.4 CallableStatement对象使用实例 4.2.5 SQL Server存储过程编程经验...
Java面试题31.jdbc调用存储过程 Java面试题32.简单说一下你对jdbc的理解 Java面试题33.写一个jdbc的访问oracle的列子 Java面试题34.jdbc中preparedStatement比Statement的好处 Java面试题35.数据库连接池的作用 Java...
│ Java面试题31.jdbc调用存储过程.mp4 │ Java面试题32.简单说一下你对jdbc的理解.mp4 │ Java面试题33.写一个jdbc的访问oracle的列子.mp4 │ Java面试题34.jdbc中preparedStatement比Statement的好处.mp4 │ Java...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
15. 使用 JDBC 调用函数 & 存储过程(视频24) 16. 课件及源码 ------------------------------------ 讲师:佟刚 尚硅谷教学总监 学员昵称"刚哥",在IT教育培训行业摸爬滚打多年,培养过N多学员,一个对教学...
用Java、JDBC和Web服务进行Oracle 数据库 10g程序设计 用Oracle 数据库10g构建高性能的企业XML应用系统 在亚太区,Oracle坚不可摧的Linux支持 技术-Linux 在亚太区,Oracle坚不可摧的Linux支持 技术-translated ...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...