java调用存储过程详解.doc

java调用存储过程详解.doc

ID:61482770

大小:22.00 KB

页数:8页

时间:2021-02-04

java调用存储过程详解.doc_第1页
java调用存储过程详解.doc_第2页
java调用存储过程详解.doc_第3页
java调用存储过程详解.doc_第4页
java调用存储过程详解.doc_第5页
资源描述:

《java调用存储过程详解.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1、什么是存储过程。存储过程是数据库服务器端的一段程序,它有两种类型。一种类似于SELECT查询,用于检索数据,检索到的数据能够以数据集的形式返回给客户。另一种类似于INSERT或DELETE查询,它不返回数据,只是执行一个动作。有的服务器允许同一个存储过程既可以返回数据又可以执行动作。2、什么时候需要用存储过程  如果服务器定义了存储过程,应当根据需要决定是否要用存储过程。存储过程通常是一些经常要执行的任务,这些任务往往是针对大量的记录而进行的。在服务器上执行存储过程,可以改善应用程序的性能。这是因为:.服务器往往具有强大的计算能力

2、和速度。.避免把大量的数据下载到客户端,减少网络上的传输量。  例如,假设一个应用程序需要计算一个数据,这个数据需要涉及到许多记录。如果不使用存储过程的话,把这些数据下载到客户端,导致网络上的流量剧增。  不仅如此,客户端可能是一台老掉牙的计算机,它的运算速度很慢。而改用存储过程后,服务器会很快地把数据计算出来,并且只需传递一个数据给客户端,其效率之高是非常明显的。3、存储过程的参数  要执行服务器上的存储过程,往往要传递一些参数。这些参数分为四种类型:  第一种称为输入参数,由客户程序向存储过程传递值。  第二种称为输出参数,由存储

3、过程向客户程序返回结果。  第三种称为输入/输出参数,既可以由客户程序向存储过程传递值,也可以由存储过程向客户程序返回结果。  第四种称为状态参数,由存储过程向客户程序返回错误信息。  要说明的是,并不是所有的服务器都支持上述四种类型的参数,例如,InterBase就不支持状态参数。4、oracle存储过程的基本语法 1.基本结构CREATEORREPLACEPROCEDURE存储过程名字(  参数1INNUMBER,  参数2INNUMBER)IS变量1INTEGER:=0;变量2DATE;BEGINEND存储过程名字2.SELEC

4、TINTOSTATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN SELECTcol1,col2into变量1,变量2FROMtypestructwherexxx; EXCEPTION WHENNO_DATA_FOUNDTHEN   xxxx; END;一:无返回值的存储过程存储过程为:CREATEORREPLACEPROCEDURETESTA(PARA1INVARCHAR2,PARA2INVARCHAR

5、2)ASBEGIN INSERTINTOHYQ.B_ID(I_ID,I_NAME)S(PARA1,PARA2);ENDTESTA;然后呢,在java里调用时就用下面的代码:packagecom.hyq.src;importjava.sql.*;importjava.sql.ResultSet;publicclassTestProcedureOne{publicTestProcedureOne(){}publicstaticvoidmain(String[]args){  Stringdriver="oracle.jdbc.driver

6、.OracleDriver";  StringstrUrl="jdbc:oracle:thin:@127.0.0.1:1521:hyq";  Statementstmt=null;  ResultSetrs=null;  Connectionconn=null;  CallableStatementcstmt=null;  try{   Class.forName(driver);   conn=DriverManager.getConnection(strUrl,"hyq","hyq");   CallableStatementpr

7、oc=null;   proc=conn.prepareCall("{callHYQ.TESTA(?,?)}");   proc.setString(1,"100");   proc.setString(2,"TestOne");   proc.execute();  }  catch(SQLExceptionex2){   ex2.printStackTrace();  }  catch(Exceptionex2){   ex2.printStackTrace();  }  finally{   try{    if(rs!=nul

8、l){     rs.close();     if(stmt!=null){      stmt.close();     }     if(conn!=null){      conn.close();     } 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。