资源描述:
《java调用存储过程小结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下。(关于调用sqlserver的存储过程将在下次进行小结请关注)一:无返回值的存储过程存储过程为:createorreplaceprocedureadddept(deptnonumber,dnamevarchar2,locvarchar2)asbegininsertintodeptvalues(deptno,dname,loc);end;然后呢,在java里调用时就用下面的代码:publicclassTestProcedure{Connectioncon
2、n=null;CallableStatementcstmt=null;PreparedStatementpstmt=null;Stringurl="jdbc:oracle:thin:@localhost:1521:mydb";Stringdriver="oracle.jdbc.driver.OracleDriver";Stringname="";publicTestProcedure(){try{Class.forName(driver);conn=DriverManager.getConnection(url,"scott","tiger");cstm
3、t=conn.prepareCall("{calladddept(,,)}");cstmt.setInt(1,13);cstmt.setString(2,"间谍部2");cstmt.setString(3,"ningbo2");cstmt.executeUpdate();System.out.println("success");}catch(Exceptione){e.printStackTrace();}finally{cstmt.close();conn.close();}}}dept表为oracle数据库方案scott中的一个表二:有返回值的存储
4、过程(非列表)存储过程为:CREATEORREPLACEPROCEDURETESTB(PARA1INVARCHAR2,PARA2OUTVARCHAR2)ASBEGINSELECTINTOPARA2FROMTESTTBWHEREI_ID=PARA1;ENDTESTB;在java里调用时就用下面的代码:packagecom.hyq.src;publicclassTestProcedureTWO{publicTestProcedureTWO(){}publicstaticvoidmain(String[]args){Stringdriver="oracle.j
5、dbc.driver.OracleDriver";StringstrUrl="jdbc:oracle:thin:@127.0.0.1:1521:hyq";Statementstmt=null;ResultSetrs=null;Connectionconn=null;try{Class.forName(driver);conn=DriverManager.getConnection(strUrl,"hyq","hyq");CallableStatementproc=null;proc=conn.prepareCall("{callHYQ.TESTB(,)}
6、");proc.setString(1,"100");proc.registerOutParameter(2,Types.VARCHAR);proc.execute();StringtestPrint=proc.getString(2);System.out.println("=testPrint=is="+testPrint);}catch(SQLExceptionex2){ex2.printStackTrace();}catch(Exceptionex2){ex2.printStackTrace();}finally{try{if(rs!=null)
7、{rs.close();if(stmt!=null){stmt.close();}if(conn!=null){conn.close();}}}catch(SQLExceptionex1){}}}}}注意,这里的proc.getString(2)中的数值2并非任意的,而是和存储过程中的out列对应的,如果out是在第一个位置,那就是proc.getString(1),如果是第三个位置,就是proc.getString(3),当然也可以同时有多个返回值,那就是再多加几个out参数了。三:返回列表由于oracle存储过程没有返回值,它的所有返回值都是通过ou
8、t参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用p