用java调用oracle存储过程总结

1、什么是存储过程。存储过程是数据库服务器端的一段程序,它有两种类型。一种类似于SELECT查询,虚拟主机,用于检索数据,检索到的数据能够以数据集的形式返 回给客户。另一种类似于INSERT或DELETE查询,它不返回数据,只是执行一个动作。有的服务器允许同一个存储过程既可以返回数据又可以执行动作。2、什么时候需要用存储过程  如果服务器定义了存储过程,应当根据需要决定是否要用存储过程。存储过程通常是一些经常要执行的任务,这些任务往往是针对大量的记录而进行的。在服务器上执行存储过程,可以改善应用程序的性能。这是因为:.服务器往往具有强大的计算能力和速度。.避免把大量的数据下载到客户端,减少网络上的传输量。  例如,假设一个应用程序需要计算一个数据,这个数据需要涉及到许多记录。如果不使用存储过程的话,把这些数据下载到客户端,导致网络上的流量剧增。  不仅如此,客户端可能是一台老掉牙的计算机,它的运算速度很慢。而改用存储过程后,服务器会很快地把数据计算出来,并且只需传递一个数据给客户端,其效率之高是非常明显的。3、存储过程的参数  要执行服务器上的存储过程,往往要传递一些参数。这些参数分为四种类型:  第一种称为输入参数,由客户程序向存储过程传递值。  第二种称为输出参数,由存储过程向客户程序返回结果。  第三种称为输入/输出参数,既可以由客户程序向存储过程传递值,也可以由存储过程向客户程序返回结果。  第四种称为状态参数,由存储过程向客户程序返回错误信息。  要说明的是,并不是所有的服务器都支持上述四种类型的参数,例如,InterBase就不支持状态参数。4、oracle 存储过程的基本语法 1.基本结构

CREATE OR REPLACEPROCEDURE 存储过程名字(参数1 IN NUMBER,参数2 IN NUMBER) IS变量1 INTEGER :=0;变量2 DATE;BEGINEND 存储过程名字

2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子:

BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THENxxxx; END;

一:无返回值的存储过程存储过程为:

TESTA(PARA1 ) HYQ.B_ID (I_ID,I_NAME) S (PARA1, PARA2);END TESTA;

然后呢,服务器空间,在java里调用时就用下面的代码:

package com.hyq.src;import java.sql.*;import java.sql.ResultSet;public class TestProcedureOne {public TestProcedureOne() {} 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_ID,I_NAME)。 二:有返回值的存储过程(非列表)存储过程为:

TESTB(PARA1 PARA2 FROM TESTTB WHERE I_ID= PARA1;END TESTB;

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

package com.hyq.src;public class TestProcedureTWO {public TestProcedureTWO() {} 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) {}}}}}

也只有懂的接受自己的失败,才能更好的去发挥自身优势,也才能够更好的去实现自我

用java调用oracle存储过程总结

相关文章:

你感兴趣的文章:

标签云: