Oracle使用带有输入和输出参数的存储过程


Oracle使用存储过程个人觉得还是有点麻烦的,一个不小心就出现什么参数错误,个人建议如果能少使用就少使用。这里我想用jdbc的方式给大家交流下我自己写的一个比较简单的存储过程。至于用框架写的我暂时还没有研究出来。过几天会补全给大家的。

1.先来写一个带有输入和输出参数的存储过程

  1. create or replace procedure xxx(  
  2.      newfid In Number,  
  3.      newfname Out Varchar  
  4. )  
  5. As  
  6. begin  
  7. Select fname Into newfname From m_student Where fid=newfid;  
  8. end;  

这里需要注意varchar不能写成varchar2,否则会出现输入和输出参数不匹配的异常

2.使用jdbc执行存储过程

  1. package org.lxh;  
  2.   
  3. import java.sql.CallableStatement;  
  4. import java.sql.Connection;  
  5. import java.sql.ResultSet;  
  6. import java.sql.SQLException;  
  7.   
  8. import oracle.jdbc.OracleCallableStatement;  
  9.   
  10. public class TestUse {  
  11.   
  12.     public static void main(String[] args) throws Exception {  
  13.   
  14.         DBConnection con = new DBConnection();  
  15.         Connection getConn = con.getConnection();  
  16.         OracleCallableStatement cs = (OracleCallableStatement)getConn.prepareCall("{call xxx(newfid => :newfid,newfname => :newfname)}");  
  17.         cs.setInt(1365);  
  18.         cs.registerOutParameter(2, java.sql.Types.VARCHAR);  
  19.           
  20.         cs.execute();  
  21.   
  22.         String strAge = cs.getString(2);  
  23.         System.out.println("fid是:" + strAge);  
  24.   
  25.         getConn.close();  
  26.   
  27.     }  
  28.   
  29. }  

OracleCallableStatement可以写成CallableStatement,输入参数不需要注册,但是输出参数需要注册,最要注意的就是数据类型了否则也会出错

更多Oracle相关信息见Oracle 专题页面 http://www.bkjia.com/topicnews.aspx?tid=12

相关内容