`
阅读更多

 

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();  
        }  
    }  
 

 

 

分享到:
评论
2 楼 dream_h 2013-03-22  
新手 学习了
1 楼 dream_h 2013-03-22  
[flash=200,200][url][img][list]
[*]
引用
[u][u][i][b][/b][/i][/u][/u]
[/list][/img][/url][/flash]
|

相关推荐

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查

    java调用oracle存储过程入门实例 增删改查

    java调用oracle存储过程入门实例 增删改查 使用dom4j读取数据库的配置文件(xml) jdbc中connection的管理 使用threadlocal

    java 调用存储过程列子

    学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下

    Oracle调用Java代码过程

    Oracle后台存储过程中调用Java代码块,以此来访问异构数据库数据(DB2)。 此方式适用场景: 原有业务逻辑均在后台实现,现要加入对异构数据库的数据访问或写入。 异构数据库的访问,多用数据联邦、透明网关或自行...

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    NULL 博文链接:https://vernonchen163.iteye.com/blog/1902788

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    本文档演示如何从 Java 存储过程将 JDBC ResultSet 作为 REF CURSOR 返回。JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的...

    针对存储过程通用的jdbc封装

    针对java调用存储过程写的通用封装,oracle,mssql测试通过,附带测试脚本.以前写过一个,感觉不是很好,这个周末就重写了一个,大家多多提意见,是eclipse工程直接跑junit就行了,所有的东西都在里面.除了存储过程也可以...

    JDBC连接数据库实例+附源码

    目的:使用JDBC连接MySQL数据库并且完成增删改查。 介绍:1)一种执行SQL语言的Java API。... 5)jdbc可以直接调用数据库存储过程。  6)jdbc操作数据库的效率很高。  7)学会了jdbc,什么数据库存取数据都会了。

    jdbc连接数据库的方式2

     在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。  9、使用Object...

    JDBC 3.0数据库开发与设计

    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存储过程编程经验...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题31.jdbc调用存储过程 Java面试题32.简单说一下你对jdbc的理解 Java面试题33.写一个jdbc的访问oracle的列子 Java面试题34.jdbc中preparedStatement比Statement的好处 Java面试题35.数据库连接池的作用 Java...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题31.jdbc调用存储过程.mp4 │ Java面试题32.简单说一下你对jdbc的理解.mp4 │ Java面试题33.写一个jdbc的访问oracle的列子.mp4 │ Java面试题34.jdbc中preparedStatement比Statement的好处.mp4 │ Java...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    尚硅谷_佟刚_JDBC.pptx

    15. 使用 JDBC 调用函数 & 存储过程(视频24) 16. 课件及源码 ------------------------------------ 讲师:佟刚 尚硅谷教学总监   学员昵称"刚哥",在IT教育培训行业摸爬滚打多年,培养过N多学员,一个对教学...

    Oracle 10g 网格数据库研讨会33个PPT下载

    用Java、JDBC和Web服务进行Oracle 数据库 10g程序设计 用Oracle 数据库10g构建高性能的企业XML应用系统 在亚太区,Oracle坚不可摧的Linux支持 技术-Linux 在亚太区,Oracle坚不可摧的Linux支持 技术-translated ...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    疯狂JAVA讲义

    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...

Global site tag (gtag.js) - Google Analytics