鹰翔宇空

学习和生活

BlogJava 首页 新随笔 联系 聚合 管理
  110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励。

一:无返回值的存储过程

存储过程为:

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 TESTA;

然后呢,在java里调用时就用下面的代码:

package com.hyq.src;

 

import java.sql.*;

import java.sql.ResultSet;

 

public class TestProcedureOne {

  public TestProcedureOne() {

  }

  public static void main(String[] args ){

    String driver = "oracle.jdbc.driver.OracleDriver";

    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";

    Statement stmt = null;

    ResultSet rs = null;

    Connection conn = null;

    CallableStatement cstmt = null;

 

    try {

      Class.forName(driver);

      conn =  DriverManager.getConnection(strUrl, " hyq ", " hyq ");

      CallableStatement proc = null;

      proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");

      proc.setString(1, "100");

      proc.setString(2, "TestOne");

      proc.execute();

    }

    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) {

      }

    }

  }

}

当然了,这就先要求要建张表TESTTB,里面两个字段(I_IDI_NAME)。

二:有返回值的存储过程(非列表)

存储过程为:

CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2)  AS

BEGIN

   SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;

END TESTB;

java里调用时就用下面的代码:

package com.hyq.src;

 

public class TestProcedureTWO {

  public TestProcedureTWO() {

  }

  public static void main(String[] args ){

    String driver = "oracle.jdbc.driver.OracleDriver";

    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";

    Statement stmt = null;

    ResultSet rs = null;

    Connection conn = null;

    try {

      Class.forName(driver);

      conn =  DriverManager.getConnection(strUrl, " hyq ", " hyq ");

      CallableStatement proc = null;

      proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");

      proc.setString(1, "100");

      proc.registerOutParameter(2, Types.VARCHAR);

      proc.execute();

      String testPrint = proc.getString(2);

      System.out.println("=testPrint=is="+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) {

      }

    }

  }

}

 

}

注意,这里的proc.getString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是proc.getString(1),如果是第三个位置,就是proc.getString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。

三:返回列表

由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage.所以要分两部分,

1,  建一个程序包。如下:

CREATE OR REPLACE PACKAGE TESTPACKAGE  AS

 TYPE Test_CURSOR IS REF CURSOR;

end TESTPACKAGE;

2,建立存储过程,存储过程为:

CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS

BEGIN

    OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;

END TESTC;

可以看到,它是把游标(可以理解为一个指针),作为一个out 参数来返回值的。

java里调用时就用下面的代码:

package com.hyq.src;

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 TestProcedureTHREE {

  public TestProcedureTHREE() {

  }

  public static void main(String[] args ){

    String driver = "oracle.jdbc.driver.OracleDriver";

    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";

    Statement stmt = null;

    ResultSet rs = null;

    Connection conn = null;

 

    try {

      Class.forName(driver);

      conn =  DriverManager.getConnection(strUrl, "hyq", "hyq");

 

      CallableStatement proc = null;

      proc = conn.prepareCall("{ call hyq.testc(?) }");

      proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);

      proc.execute();

      rs = (ResultSet)proc.getObject(1);

 

      while(rs.next())

      {

          System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");

      }

    }

    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) {

      }

    }

  }

}

在这里要注意,在执行前一定要先把oracle的驱动包放到class路径里,否则会报错的。

如果有什么问题呢,可以和我联系hnlyhyq@163.com;qq:77542728.

我的心愿,愿中国的程序员早日达到世界水平,领先世界科技。

posted on 2005-12-13 11:05 TrampEagle 阅读(86482) 评论(100)  编辑  收藏 所属分类: 学习体会

Feedback

# re: 用java调用oracle存储过程总结 2005-12-26 17:35 江波
谢谢,,  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2005-12-26 17:36 江波
你能不能加我,,,我们共同学习哈。。
42401916  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2005-12-28 08:28 TrampEagle
这本就是个相互交流学习的平台,所以不用客气的。你当然可以成为我的好友的,共同学习,共同努力!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-01-09 09:36 张伟
收益良多,十分感谢;希望能成为好友,共同学习进步!qq:349477837  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-01-10 14:02 ice
垃圾代码
中国怎么有这么多的垃圾程序员,去死吧 还希望早日达到世界水平 笑话!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-01-10 14:29 TrampEagle
TO ice:
首先向你致歉,可能这些代码没有使你能够如愿正常进行你的工作;
其次,我想声明一点,这里的代码只是介绍一种方法,提供一种途径,我的本意是为自己做笔记的,其次才是能不能为他人做点贡献,所以有的地方可能不太完善,为自己的做法致歉。
但是,通过谩骂就能解决问题吗?既然这方面,我们存在沟壑,我们就应该好好沟通一下,对你我想也不会有坏处的。如果你有什么问题,可以通过我的联系方式同我联系!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-01-12 11:43 ryan
我也研究Java调Oracle Store Procedure一段时间,发现一些问题
主要是Open 的Cursor不会释放,v$open_cursor只增长不减少,最后服务器只能重起。
希望能交流。QQ:22828569  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-03-10 16:41 Janson
你的文章发布的真是太好了!我找这方面的例子已经一个星期了,终于在你这能够执行了,呵呵,从此我也可以练习使用oracle的存储过程了。哥们,真的谢了!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-03-10 21:51 TrampEagle
@Janson
能帮上你的小忙是我万分的荣幸,呵呵!
其实,我学习存储过程时,就是因为找不到这方面的完整例子花费了不少时间,所以记于此,一是作笔记,另外给需要这方面知识的朋友提供一份参考,使他们少走一些弯路。
希望大家都能把自己的一些心得体会发布出来,互相帮助,共同进步!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-03-28 14:39 ajian005
可以少走弯路 , 谢谢 !  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-05-29 18:13 TrampEagle
补充一个使用oracle存储过程分页的小例子:
1, 建一个程序包。如下:

CREATE OR REPLACE PACKAGE TESTPACKAGE AS

TYPE Test_CURSOR IS REF CURSOR;

end TESTPACKAGE;

2,建立存储过程,存储过程为:


create or replace procedure TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR,lowerNum in numeric,higherNum in numeric) is
begin
OPEN p_CURSOR FOR select * from ( select row_.*, rownum rownum_ from (select id,title,status from HYQTEST) row_ where rownum <= higherNum) where rownum_ >lowerNum;
end TESTC;

使用plsql测试:
declare
lowerNum integer;
higherNum integer;
id varchar2(10);
title varchar2(500);
status numeric;
c testpackage.Test_CURSOR;
rownum_ integer;
begin
lowerNum:=1;
higherNum:=10;
TESTC(c,lowerNum,higherNum);
LOOP
FETCH c INTO id,title,status,rownum_;
EXIT WHEN c%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('=行号='||rownum_||'=='||id||'==='||title||'===='||status||'==');
END LOOP;
CLOSE c;

end;

  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-07-12 13:18 yclc
似乎使用cStmt.getResultSet() 可以直接获取procedure中执行过的select  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-08-09 09:43 wu
呵呵~我也找了挺长时间了,正好用上,谢谢 a lot 了哈哈。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-08-14 10:43 才子
谢谢你了,大哥  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-08-23 17:25 不断学习是责任
谢谢了,受益不少.  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-09-29 17:13 coldiced
谢谢帮助,支持楼主!鄙视牛人!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-10-31 19:46 zdl
应该好好学习,支持下楼主  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-11-25 11:02
顶一下  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-12-14 11:44 ipxzerg
样例的技术含量和代码的水平有待提高,不过还是支持一下,希望楼主加强学习。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2006-12-23 23:37 vally
太感谢了,正急需这俩方面的信息,今天一找就给全部找到了!希望楼主能多发布些好资料呀!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-02-14 14:07 在线视频
不错,3种情况都介绍了  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-03-30 13:34 fdfd
dffdfddff  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-03-30 14:11 aa
中国程序员什么 时候才到世界水平呢?难,少  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-04-27 14:16 sd
加油  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-05-10 15:28 Laurence.Lee
up!
up!
Thanks a lot!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-05-22 11:54 ade
谢谢分享!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-06-04 11:28 学习ing
顶以下  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-07-13 11:24 huraky
谢谢楼主,收益不少!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-07-17 17:24 zbc
真的写得很好..
是个学习的好例子.  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2007-07-22 00:43
非常感谢楼主,我找这样的例子找了好久,我原来用sqlserver,现转oracle,两者差别太大,在sqlserver中轻松能搞定的存储过程在oracle中有点束手无册了,查了很多资料,也没搞明白,看了你的例子,受益非浅,可以加你的QQ不,我的QQ:663535631

  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-08-14 16:35 bai
总结得很好
顶!!!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-08-26 18:16 可可
不错啊  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-09-07 14:33 little star
特别鄙视哪个说话垃圾的.
我觉得楼主很不错的,把自己做出来的东西跟大家一起分享,虽然这个代码简单了点,但也有很多人看到后受到启发.在国内做东西,每个人的思路都不一样,实现的方式也可能不一样,象你那样说完全没有必要,你觉得不合适你,你可以不看.  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-09-18 13:41 饶志华
谢谢分享  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-10-10 17:49 Roger Gao
数据类型是table,元素类型是Record的存储过程调用过吗?  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2007-11-10 16:26 123
能用存储过程操作文件吗 能用oracle调用java程序删除文件吗 有的话 请说出来 共同研究 你的文章很有用   回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2007-12-28 16:52 jedi
多谢,转到偶的BLOG上收藏了  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-03-18 19:45 gma
@ice
你写一个不垃圾的给瞧瞧!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-03-24 11:39 Irene
正好我也要学习存储过程,感谢lz  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-03-31 11:59 hao
我刚开始学存储过程,多谢啦!  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2008-04-01 09:47 aa
你他妈的狗屎,不要乱说别人的代码不好,有本领把你写的share出来,自己写不出吗还说别人是垃圾,我看你才是垃圾中的极品  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-04-16 21:28 yangyi
你写的太好了
能否加我啊
QQ 465937187  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-04-25 00:00 man
说点题外话,你的文章咬文嚼字的,闲词废话和语病很多,希望你尽量用平实直接的表达方式。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-05-13 23:05 xlx
谢谢  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-05-21 14:39 hello
为什么我按上面做的,数据库表里面没有数据啊  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2008-05-28 15:26 Jerry
感谢楼主  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-06-26 20:27 杰杰
非常感谢  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-07-26 12:29 开发者
写的还不错。支持楼主,鄙视那个说脏话的。  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2008-07-29 09:17 aa
你个只会说垃圾的傻B  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2008-08-05 16:45 飞飞
@ice
你妈B你有本事你自己写一个出来,人家写的不好至少人家给大家分享了,我想大家共同讨论才有助于共同提升中国程序员的整体水平吧,你在这儿瞎扯淡有用吗?
还是为了显示自己很牛B啊?  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-08-06 23:09 风中青竹
不错,写得挺详细哦!!!

谢谢了!!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-08-19 14:23 afda
我靠,终于可以运行了。不错。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-08-28 20:24 wandao
请问:一:无返回值的存储过程中 HYQ.B_ID , HYQ是什么,B_ID 是什么?谢谢!!  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2008-08-28 21:00 呵呵
我在oracle 9i 的 isqlplus 中运行 :
CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS
BEGIN
SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;
END TESTB;
老报错怎么回事?TESTTB 我也建了  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-09-23 15:32 octopus754
"ice" 同学,通常情况下,高手是会尊重任何人的劳动成果的.  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2008-10-08 13:34 红狼
楼主好样的!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-10-16 17:01 hoho
非常感谢! 学习了  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-10-23 08:53
谢谢  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-10-26 19:16 虎虎
太好了
  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2008-11-28 15:12 linyupei
我已经加你QQ了 有问题请教要回复哦!
真的挺好的  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-01-06 22:11 大雨
很好,学习了,不管怎样都要努力!楼主肯分享真是太好了,大家都是中国人,又都是学程序的,不要骂来骂去了。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-01-14 18:24 123
mark  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2009-02-03 17:43 aa
很好 很常久都帖子啊  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-02-25 21:12 ICC
谢谢了。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-03-10 14:02 梦想
你提供的例子对我帮助很大,非常感谢!
愿中国的程序员早日达到世界水平,领先世界科技。
  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-03-13 13:37 copper
谢谢了,写的相当不错,支持楼主。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-04-04 22:57 小蛇
谢谢楼主分享, 对java调用的oracle procedure的介绍很简洁,适合快速入门。
要知道这篇贴子的主要目的是介绍基本技术,不是什么程序设计技巧和架构。
我没看出来哪点垃圾,@ice其实才是一垃圾,是猪,是傻B。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-04-27 18:46 hu
多谢楼主!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-06-11 10:12 驛陸♂湮華↘
java调用我明白,可是在PL/SQL中怎么用call语句调用含out参数的存储过程,弄了半天也不取不出来参数值,如果LZ知道,告知一下,谢谢!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-07-03 13:55 xiao
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2009-07-03 15:38 nc000
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); 中的1是指什么,麻烦给说明一下  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2010-03-09 14:59 tyzqqq123=163.com
写的好,清晰而简约,有国外技术文章的风格。
其实简约而不简单的程序更能体现出水平,写的看上去很“难”有不代表技术就好。
楼主的想法很好,应该好好鼓励楼主,应该向老外学习,不应该总是一串串骂语。
我想大家互相鼓励,相互尊重,中国的程序员一定很快达到世界水平.  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2010-03-17 12:58 过客
写的很好,希望像LZ的 人 越来越多,不过提个建议啊 ,效率还是要考虑下 ,呵呵  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2010-03-22 14:20
加我把,,,我建议还是建一个群交流~373769658  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2010-03-31 14:51 fg
真是ice@ice
  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2010-09-20 09:51 hong
楼主写的棒,总结的棒,如果中国的程序员都有这样的想法和素质,我想我们国家的程序水平会有质的飞跃。虽然骂人是不对的,但是我觉得楼上的那个ice才是个垃圾,鄙视那个骂人的傻B!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2011-05-03 11:28
非常感谢。  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2011-07-14 20:22 xxx
niu bi 文档!!!  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2011-07-20 15:03 请教
楼主,我想问一下,当使用游标获取了结果集后,如何关闭游标?还是不需要关闭,调用完毕后自动会释放的?  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2012-03-23 14:52 wu
顶下  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2012-04-12 23:52 lujb
我想问一下,怎么实现ORACLE的JAVA调用存储过程,实现多线程?

import java.sql.*;
import java.sql.ResultSet;
import oracle.jdbc.*;

public class HistoryDataMove
{

public static void main(String[] args) {
//System.out.println("11111");
HistoryDataMove schedualed = new HistoryDataMove();
schedualed.action();
}

class RunHandle0 implements Runnable {
private OracleJavaProc proc = null;
private String procName = "test";

RunHandle0(String procName) {
this.procName = procName;
this.proc = new OracleJavaProc();
}

public void run() {
try {
System.out.println(procName);
proc.procStartup(procName);
} catch (Exception e) {
e.printStackTrace();
}
}
}

public class OracleJavaProc {

public void procStartup(String procName) {
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:default:connection:");

CallableStatement proc = null;
proc = conn.prepareCall("{call " + procName + "()}");
proc.execute();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(conn!=null){
conn.close();
}
}
catch (SQLException ex1) {
}
}
}
}
public void action() {
RunHandle0 t1 = new RunHandle0("HISDATA_MOVE.test");
Thread thread1 = new Thread(t1);
thread1.start();
RunHandle0 t2 = new RunHandle0("HISDATA_MOVE.test1");
Thread thread2 = new Thread(t2);
thread2.start();
}
}

我在myeclipse可以实现多线程,但在ORACLE那,只能是单线程顺线执行
望回复:lujbmail@163.com  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2012-09-10 21:03 路人甲乙丙
楼主。。你那个返回列表,就是输出参数是游标的, 调用存储存过程,不关闭游标? 好像这是不允许的,所以存诸返回结果集,然后在JAVA 中调用,这样的写法不合理,会被领导骂啊。。 有没有更好的方法呢?  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2012-11-10 15:28 菩提
@ice
贱人年年有,今年何其多啊!!
  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2012-12-04 14:26 费华乐
总结的很好,面试官就问我java怎么调用存储过程。
我没回答上来。看了你的总结,清楚多了,谢谢!!!  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2012-12-17 16:12 DDD
SELECT TESTTB.什么 INTO PARA2 FROM TESTTB WHERE I_ID= PARA1; @呵呵  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2012-12-24 16:00 jac
call HYB.TESTA(?,?)
这部分是什么啊  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2013-03-24 12:21 ZW
终于找到个我这种菜鸟能看懂的代码啦,雪中送炭呀.顶  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2013-04-01 17:17 tim
楼主,我想问个问题。我一直不知道你在开头写的这段
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 TESTA;

这些sql写在哪里啊?我在项目里要放在什么地方?这个问题很困惑我!求助!
  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2013-04-10 17:32 hahaWOshiwho

@tim写在PLsql developer上吧?或者oracle上?在数据库上写存储过程,然后用java调用.
  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2013-05-14 16:22 xiaoyu
@tim
这段肯定是放在数据库里的啊,存储过程就是保存在数据库的一段代码。  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2013-06-13 18:22 chester
请问楼主 p_CURSOR 是什么?  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2013-06-20 10:47 手酸死
@ice
你个sb,儿子。你写的出来?  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2013-06-20 15:19 111
@ice
说实话代码没细看 但是看到你说话 我不镇定了。 为什么美好的生活中总有你这种傻逼。 你是不以为你自己代表中国最先进的生产力了。 达不到先进就是有你这种垃圾  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2013-07-26 16:38 黑猫
楼主,我在pl/sql中写
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 TESTA;
运行程序是总是报java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'HYQ.TESTA'错误  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2013-08-08 23:16 545
操你妹  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2014-05-07 10:10 java编程
@ice
你妈逼的你会写你不写出来,你没有资格在说骂别人,别他妈的自认为是。小心被车给撞死。  回复  更多评论
  

# re: 用java调用oracle存储过程总结[未登录] 2014-06-06 20:29 匿名
游标名字@chester
  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2014-08-06 10:58 czgwq344703887
@little star
中国的学问博大精深,学无止境,支持楼主  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2014-08-18 16:12 iversion
SB一个 不解释@ice
  回复  更多评论
  

# re: 用java调用oracle存储过程总结 2014-10-03 23:35 bean先森
学习了  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: