知识大全 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的存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! VFP由于其通
在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv
Jsp中调用Oracle存储过程的小例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /*执行
调用Oracle数据库中的存储过程需要两步走 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 存储
知识大全 使用VB调用Oracle程序包内的存储过程返回结果集
使用VB调用Oracle程序包内的存储过程返回结果集 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 Java/JSP中调用SQL Server存储过程完整示例
Java/JSP中调用SQLServer存储过程完整示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
在Java中调用Oracle的过程和函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 内容或简
在Java中调用Oracle包中的过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一先在or
用hibernate操作数据库可以通过获取的session值调用connection()方法获取connection从而调用存储过程java调用存储过程什么是存储过程?存储过程是指保存在数据库并在数据
在Oracle中使用Java存储过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java存储