oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数。

下面是详细情况说明:

一:无返回值的存储过程调用

存储过程:

create  or replace Procedure PRO_1(PARA1 in VARCHAR2,PARA2 in VARCHAR2)   as

begin

insert into  EMP(ID,NAME) values (PARA1, PARA2);

end PRO_1;

java程序调用:(和下面类同)

二:有返回值的存储过程调用(非结果集)

存储过程:

create  or replace Procedure PRO_2(PARA1 in VARCHAR2,PARA2 OUT VARCHAR2)   as

bigin

select NAME into PARA2 from EMP where ID= PARA1;

end PRO_2;

java程序调用:

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        Connection conn = DriverManager.getConnection(
            "jdbc:oracle:thin:@202.96.28.250:1521:he", "username", "password");
        CallableStatement st = conn.prepareCall("{call PRO_2(?,?)}");

    st.setString(1,"1");
        st.registerOutParameter(2,OracleTypes.VARCHAR);
        st.execute();

String name = st.getString(2);//2与上面存储过程的out参数位置对应,也可以同时有多个返回值,那就是                再多加几个out参数了

System.out.println(r.getString("title"));

三:有返回值的存储过程调用(返回结果集)

存储过程:

create or replace procedure Test(p_cur in out sys_refcursor)
as

begin
open p_cur for select * from BOOK;
end;

java程序调用:

try {
        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        Connection conn = DriverManager.getConnection(
            "jdbc:oracle:thin:@202.96.28.250:1521:he", "username", "password");
        CallableStatement st = conn.prepareCall(
            "{call Test(?)}");
        st.registerOutParameter(1,OracleTypes.CURSOR);
        st.execute();
        ResultSet r = (ResultSet) st.getObject(1);

while (r.next()) {
            System.out.println(r.getString("title"));
        }
  }
  catch(Exception e) {
}

转载于:https://www.cnblogs.com/xh6210/archive/2012/07/04/2576545.html

java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)相关推荐

  1. oracle java存储过程返回值_java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)...

    java程序调用Oracle 存储过程 获取返回值(无返回,非结 果集,结果集) oracle中procedure是不能有返回值的,要想返回值,就得有 输出参数,同样要想返回记录集,可以把游标类型作为 ...

  2. 如何通过java程序调用oracle中的存储过程

    一.编写一个存储过程,向student表中添加学生. 1.创建一个student表 create table student(stuId number,stuName varchar2(50),stu ...

  3. Java(CallableStatement)调用Oracle存储过程返回结果集(ResultSet)

     一:无返回值的存储过程调用 存储过程: CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS BEGIN ...

  4. 存储过程之八-java代码调用oracle存储过程

    一.简介 与调用mysql存储过程类型过程都是如下 1.创建连接 Connection conn = DriverManager.getConnection(url, user, password); ...

  5. java调用oracle存储过程_java调用oracle存储过程详解

    之前给大家介绍了java代码调用存储过程,下面要给大家介绍的就是java当中调用oracle存储过程,一起来看看吧. 首先来看一下项目结构: 在数据库创建存储过程的脚本,假如,使用的是本地的oracl ...

  6. php oracle 存储过程 返回值,PHP 调用 Oracle 存储过程 之 查询

    在网上找了很久都没找到结果,今天看帮助,结合JAVA程序中的一个实例,写出了这个PHP调用Oracle存储过程的例子,也许有人会说PHP调用存储过程是很简单的,但在这里我还是想把这点小成就拿来共享一下 ...

  7. java调用存储过程 oracle_java调用oracle存储过程

    java调用oracle存储过程 java代码 Map param = new HashMap(); param.put("in_str", "1,2,3,4" ...

  8. python获取返回值_python 调用 shell ,获取返回值和返回信息

    网络上有各种方案解决python调用shell的解决方案,但是没有一个完美的,以下是本人整理的一个方案,比较完美地解决了同时解决获取返回值和返回信息. def run_linux_cmd_quiet( ...

  9. java c3p0 存储过程_JAVA Spring 连接池 调用 Oracle 存储过程的问题?

    求助,JAVA Spring 连接池 调用 Oracle 存储过程的问题?在Spring中配置了c3P0的连接池,在调用Oracle的存储过程时,报错[code]java.lang.ClassCast ...

最新文章

  1. python如何创建不同元素的矩阵_python – 如何在数据帧中创建矩阵元素的数...
  2. UVa573 The Snail
  3. 蓝桥杯java第六届决赛第三题--显示二叉树
  4. java 一元一次方程求解_七年级一元一次方程概念和解法,掌握这些就够了!
  5. ACL 2020 | 知识库问答的多跳复杂问题查询图生成
  6. Qt4小技巧——QTextEdit自动滚屏
  7. 重构-改善既有代码的设计(十)--简化函数调用
  8. LeetCode 之 JavaScript 解答第98题 —— 验证二叉搜索树(Validate Binary Search Tree)
  9. 图:成都第三医院知识竞赛于9月29日圆满结束,PPT题目界面一览
  10. spconv编译与安装
  11. 小众软件(持续更新)
  12. gmx_MMPBSA.py的安装及使用--只翻译部分内容,具体可参考官方文档(https://valdes-tresanco-ms.github.io/gmx_MMPBSA/dev/)
  13. [GAMES101]现代计算机图形学课程总结2:光栅化和反走样
  14. 金融产品的不可能三角:收益性、风险性、流动性
  15. [×××.launch]is neither a launch file in package [××] nor is [××] a launch file name解决办法
  16. ASP.NET Core MVC_Tag Helper
  17. Azure Synapse Analytics(Azure SQL DW) 性能优化指南(2)——使用具体化视图优化性能(上)
  18. 国际机器视觉产业发展现状与趋势
  19. Oracle系统服务
  20. 关于ARM核心板、一体板、底板的知识分享

热门文章

  1. 恐怖黎明稳定服务器,恐怖黎明新人联机图文教程 怎么联机-游侠网
  2. java处理linux中的 m_Linux下处理BOM头和^M的简单方法
  3. java servlet 转发和重定向_JavaWeb(一)Servlet中乱码解决与转发和重定向的区别
  4. php发扑克牌,php 扑克牌代码的简单例子
  5. java 内部类私有成员 能访问,为什么外部Java类可以访问内部类私有成员?
  6. python两个元组相加_《第5章 Python 列表与元组》5.1.3 序列相加(Adding)!
  7. lua与C++粘合层框架
  8. PCB布局,布线技巧总结
  9. 《Java8实战》笔记(05):使用流
  10. adguard没有核心 core no_面试官:线程池如何按照core、max、queue的执行顺序去执行?...