知识大全 java调用oracle存储过程

Posted

篇首语:月与灯依在,不见去年人本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java调用oracle存储过程相关的知识,希望对你有一定的参考价值。

  一 无返回值的存储过程

  存储过程为   CREATE OR REPLACE PROCEDURE TESTA(PARA IN VARCHAR PARA IN  VARCHAR )  AS

  BEGIN

  INSERT INTO HYQ B_ID (I_ID I_NAME) VALUES (PARA PARA )

  END TESTA

  然后呢 在java里调用时就用下面的代码     package 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 @ 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( )

  proc setString( TestOne )

  proc execute()

  

  catch (SQLException ex )

  ex printStackTrace()

  

  catch (Exception ex )

  ex printStackTrace()

  

  finally

  try

  if(rs != null)

  rs close()

  if(stmt!=null)

  stmt close()

  

  if(conn!=null)

  conn close()

  

  

  

  catch (SQLException ex )

  

  

  

  

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

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

  存储过程为  CREATE OR REPLACE PROCEDURE TESTB(PARA IN VARCHAR PARA OUT VARCHAR )  AS

  BEGIN

  SELECT INTO PARA FROM TESTTB WHERE I_ID= PARA

  END TESTB

  在java里调用时就用下面的代码    package hyq src

  public class TestProcedureO

  public TestProcedureO()

  

  public static void main(String[] args )

  String driver = oracle jdbc driver OracleDriver

  String strUrl = jdbc oracle thin @ 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( )

  proc registerOutParameter( Types VARCHAR)

  proc execute()

  String testPrint = proc getString( )

  System out println( =testPrint=is= +testPrint)

  

  catch (SQLException ex )

  ex printStackTrace()

  

  catch (Exception ex )

  ex printStackTrace()

  

  finally

  try

  if(rs != null)

  rs close()

  if(stmt!=null)

  stmt close()

  

  if(conn!=null)

  conn close()

  

  

  

  catch (SQLException ex )

  

  

  

  

  

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

  三 返回列表

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

     建一个程序包 如下    CREATE OR REPLACE PACKAGE TESTPACKAGE  AS

  TYPE Test_CURSOR IS REF CURSOR

  end TESTPACKAGE

   建立存储过程 存储过程为     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 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 @ 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( oracle jdbc OracleTypes CURSOR)

  proc execute()

  rs = (ResultSet)proc getObject( )

  while(rs next())

  

  System out println( <tr><td> + rs getString( ) + </td><td> +rs getString( )+ </td></tr> )

  

  

  catch (SQLException ex )

  ex printStackTrace()

  

  catch (Exception ex )

  ex printStackTrace()

  

  finally

  try

  if(rs != null)

  rs close()

  if(stmt!=null)

  stmt close()

  

  if(conn!=null)

  conn close()

  

  

  

  catch (SQLException ex )

  

  

  

  

   取得存储过程返回的值      CallableStatement cs = conn prepareCall( call proc_fbquery(? ? ?) ) //调用存储过程cs setString( mem) cs setInt( n) cs registerOutParameter( oracle jdbc OracleTypes CURSOR) cs execute() rs=(ResultSet)cs getObject( )

   对存储过程赋值时  

  CallableStatement cs= conn prepareCall( call proc_fbquery(?) ) //调用存储过程cs registerOutParameter( oracle jdbc OracleTypes CURSOR) cs setCursorName(cusorName)   //提供result的名称cs setString( rs) rs=cs executeQuery() rs =(ResultSet)cs getObject( )

cha138/Article/program/Java/hx/201311/26452

相关参考

知识大全 VFP中调用Oracle的存储过程

VFP中调用Oracle的存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  VFP由于其通

知识大全 一个简单的oracle分页存储过程的实现和调用

  在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv

知识大全 Jsp中调用Oracle存储过程的小例子

Jsp中调用Oracle存储过程的小例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /*执行

知识大全 调用Oracle数据库中的存储过程需要两步走

调用Oracle数据库中的存储过程需要两步走  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  存储

知识大全 使用VB调用Oracle程序包内的存储过程返回结果集

使用VB调用Oracle程序包内的存储过程返回结果集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Java/JSP中调用SQL Server存储过程完整示例

Java/JSP中调用SQLServer存储过程完整示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 在Java中调用Oracle的过程和函数

在Java中调用Oracle的过程和函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  内容或简

知识大全 在Java中调用Oracle包中的过程

在Java中调用Oracle包中的过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一先在or

知识大全 如何通过hibernate调用存储过程

用hibernate操作数据库可以通过获取的session值调用connection()方法获取connection从而调用存储过程java调用存储过程什么是存储过程?存储过程是指保存在数据库并在数据

知识大全 在Oracle中使用Java存储过程

在Oracle中使用Java存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java存储