预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

、什么是存储过程。存储过程是数据库服务器端的一段程序它有两种类型。一种类似于SELECT查询用于检索数据检索到的数据能够以数据集的形式返回给客户。另一种类似于INSERT或DELETE查询它不返回数据只是执行一个动作。有的服务器允许同一个存储过程既可以返回数据又可以执行动作。2、什么时候需要用存储过程如果服务器定义了存储过程应当根据需要决定是否要用存储过程。存储过程通常是一些经常要执行的任务这些任务往往是针对大量的记录而进行的。在服务器上执行存储过程可以改善应用程序的性能。这是因为:.服务器往往具有强大的计算能力和速度。.避免把大量的数据下载到客户端减少网络上的传输量。例如假设一个应用程序需要计算一个数据这个数据需要涉及到许多记录。如果不使用存储过程的话把这些数据下载到客户端导致网络上的流量剧增。不仅如此客户端可能是一台老掉牙的计算机它的运算速度很慢。而改用存储过程后服务器会很快地把数据计算出来并且只需传递一个数据给客户端其效率之高是非常明显的。3、存储过程的参数要执行服务器上的存储过程往往要传递一些参数。这些参数分为四种类型:第一种称为输入参数由客户程序向存储过程传递值。第二种称为输出参数由存储过程向客户程序返回结果。第三种称为输入/输出参数既可以由客户程序向存储过程传递值也可以由存储过程向客户程序返回结果。第四种称为状态参数由存储过程向客户程序返回错误信息。要说明的是并不是所有的服务器都支持上述四种类型的参数例如InterBase就不支持状态参数。4、oracle存储过程的基本语法1.基本结构CREATEORREPLACEPROCEDURE存储过程名字(参数1INNUMBER参数2INNUMBER)IS变量1INTEGER:=0;变量2DATE;BEGINEND存储过程名字2.SELECTINTOSTATEMENT将select查询的结果存入到变量中可以同时将多个列存储多个变量中必须有一条记录否则抛出异常(如果没有记录抛出NO_DATA_FOUND)例子:BEGINSELECTcol1col2into变量1变量2FROMtypestructwherexxx;EXCEPTIONWHENNO_DATA_FOUNDTHENxxxx;END;一:无返回值的存储过程存储过程为:CREATEORREPLACEPROCEDURETESTA(PARA1INVARCHAR2PARA2INVARCHAR2)ASBEGININSERTINTOHYQ.B_ID(I_IDI_NAME)S(PARA1PARA2);ENDTESTA;然后呢在java里调用时就用下面的代码:packagecom.hyq.src;importjava.sql.*;importjava.sql.ResultSet;publicclassTestProcedureOne{publicTestProcedureOne(){}publicstaticvoidmain(String[]args){Stringdriver="oracle.jdbc.driver.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");CallableStatementproc=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{