Java调用存储过程(有返回值)

1:创建存储过程

此存储过程通过传入的参数(Name),返回一个参数(address)。

create or replace procedure demo_procedure(namedemo in varchar2,addressdemo out varchar2)
as
begin 
select address into addressdemo from system.demo where name=namedemo;
end;

2:Java代码:

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;  

public class TestProcedureTwo {
  public TestProcedureTwo() {
  }
  public static void main(String[] args ){
    String driver = "oracle.jdbc.driver.OracleDriver";
    String strUrl = "jdbc:oracle:thin:@localhost:1521:myoracle";
    Statement stmt = null;
    ResultSet rs = null;
    Connection conn = null;
    try {
      Class.forName(driver);
      conn =  DriverManager.getConnection(strUrl, "system", "admin");
      CallableStatement proc = null;
      proc = conn.prepareCall("{ call dem_procedure(?,?) }");
      proc.setString(1, "kalision");
      proc.registerOutParameter(2, Types.VARCHAR);
      proc.execute();
      String testPrint = proc.getString(2);
      System.out.println("存储过程返回的值是:"+testPrint);
    }
    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驱动的jar包。

时间: 2024-08-08 09:39:17

Java调用存储过程(有返回值)的相关文章

java调用shell获取返回值

转自:http://blog.csdn.net/tengdazhang770960436/article/details/12014839 1.shell文件return.sh echo 1 echo 2 echo 3 2.java文件Test.java [java] view plain copy import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.InputStreamReader

关于Set Nocount ON的性能 |c#调用存储过程的返回值总是-1

原文地址:http://www.tuicool.com/articles/qe6BZbR 也许因为它太过于简单,自己一直没能好好关注这个语句,只记得"只是"提高点性能而已.有时会在存储过程中写上几句,有时也会懒得去敲这几个字母.但是.他们SET NOCOUNT ON 和SET NOCOUNT OFF 之间到底有多大的区别吗?前天一时好奇.终于想弄清楚他们之间性能有多大区别.在google一遍,找了几篇文章.我们可以得出一些结论. How NOCOUNT affects ADO.NET (NOCO

Java调用存储过程返回数组

Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMBER; begin SELECT id INTO poet_id FROM poets WHERE name = poet; INSERT INTO deaths (mort_id, age) VALUES (poet_id, poet_age); end set_death_age; 下面是调用上

java调用存储过程

这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励. 一:无返回值的存储过程 存储过程为: CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)  AS BEGIN INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2); END T

Java线程中带有返回值的线程Callable

在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.现在Java终于有可返回值的任务(也可以叫做线程)了. 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口. 执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了. 下面是个很简单的例子: package com.lyc import java.util.co

Entity Framework中对存储过程的返回值的处理

很早就开始注意到EF了,但一直没有机会用,换了工作后,第一个项目就使用EF6进行开发. 项目不是很大,EF完全可以胜任. 但是开发过程中,难免还是会遇到一些复杂的运算,需要频繁访问数据库. 此时,想到的比较简单的方式,就是使用存储过程,在存储过程中进行一定的运算,然后把运算的结果(一个查询结果)通过存储过程返回. 思路上完全没有问题,就直接建了一个存储过程,然后更新edmx.发现,更新后,EF中,生成的对这个存储过程的调用,返回结果却是“Int”??? 之前也有做过通过存储过程返回值,都是返回一

spring jdbctemplate调用存储过程,返回list对象

注:本文来源于<  spring jdbctemplate调用存储过程,返回list对象 > spring jdbctemplate调用存储过程,返回list对象 方法: /** * 调用存储过程 * @param spName */ @SuppressWarnings("unchecked") public List<HashMap<String, Object>> executeSP(String procedure) { //procedure

在Delphi中如何获得SQL中存储过程的返回值?

示例存储过程:create procedure proc_loginusername varchar(20),password varchar(20)asdeclare @result intselect @result=count(*) from loginuser where [email protected] and [email protected]if @result=0return 0return 1go Delphi代码:var ret:integer;......      wi

SqlServer 获得存储过程的返回值(参数返回),别玩了output

declare @dingdanid int declare @fanhuizhi int set @dingdanid = 1 exec 检测订单出库资格 @dingdanid ,@fanhuizhi output   (注意别忘了output否则返回值是NULL) select @fanhuizhi create proc dbo.检测订单出库资格 @dingdanID int,     @returnValue int output as -- 输入变量 订单编号 set @returnV

利用SQLServer查询分析器获取存储过程的返回值,检查测试存储过程

1.存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况(1)如果通过查询分析器执行该存储过程,在显示栏中如果有影响的行数,则影响几行count就是几(2)如果通过查询分析器执行该存储过程,在显示栏中如果显示'命令已成功完成.'则count = -1;在显示栏中如果有查询结果,则count = -1总结:A.ExecuteNonQuery()该方法只返回影响的行数,如果没有影响