当前位置: 代码迷 >> J2EE >> jdbc调用存储过程的有关问题。
  详细解决方案

jdbc调用存储过程的有关问题。

热度:238   发布时间:2016-04-22 02:30:45.0
jdbc调用存储过程的问题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
存储过程有个out的参数,类型是table,怎样用java获取啊?
我用registerOutParameter(2, oracle.jdbc.OracleTypes.ARRAY,"table的名字");也不行。。
table是全局的也不行,放在package也不行。。。

求代码。。

------解决方案--------------------
百度吧,这个问题很多回答
------解决方案--------------------
可以看看这文章
http://blog.csdn.net/east271536394/article/details/5643371

Java code
# /********************************* #  *Create proc demo_proc  #    @inparam1 int , #    @inparam2 varchar(20), #    @inparam3 varchar(20), #    @inparam4 varchar(50) #    AS #     insert into test values(@inparam1,@inparam2,@inparam3,@inparam4) #  *存储过程 #  *表 #  * create table test( #  *  [id] int, #  *  [name] varchar(20), #  *  age varchar(20), #  *  address varchar(50) #  *  ) #  * #  **********************************/  # import java.sql.*;  # /** #  *author:East(张栋芳) #  *date:2008-6-16 #  */  # public class StoreTest{  #     private static Connection con=null;  #     static String  url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=pubs";  #     public Connection getConn(){  #         System.out.println("aaaaaaaaaaaa");  #         try{  #           Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  #           con=DriverManager.getConnection(url,"sa","");  #         }catch(ClassNotFoundException e){  #             e.printStackTrace();  #         }catch(SQLException se){  #             se.printStackTrace();  #         }  #         return con;  #     }  #     public void doStore() throws Exception{  #         String strSQL="{call demo_proc(?,?,?,?)}";  #         CallableStatement sqlStmt = getConn().prepareCall(strSQL);  #         sqlStmt.setInt(1,1);  #         sqlStmt.setString(2,"张栋芳");  #         sqlStmt.setString(3,"20");  #         sqlStmt.setString(4,"湖南永州");  #         int i=sqlStmt.executeUpdate();  #         System.out.println ("bbbbbbbbbbb");  #     }  #       #     public static void main(String [] args)throws Exception{  #         StoreTest test = new StoreTest();  #         test.doStore();   #     }  # }
------解决方案--------------------
Java code
ArrayDescriptor array2Tab = ArrayDescriptor.createDescriptor("你的嵌套table名",conn);ARRAY vArray = new ARRAY(array2Tab , conn, arr);//arr是你的java种的数组
------解决方案--------------------
哦,看成In参数了,out参数你registerOutParameter然后getArray不行吗,可以把嵌套表换成VARRAY试一下

------解决方案--------------------
晕死,它返回的是一个“Table”,也就是一个游标呀。

Java code
// 注册输出参数应该是个游标cs.registerOutParameter(2, OracleTypes.CURSOR);// 接收,返回对象是个ResultSetResultSet rs=(ResultSet)cs.getObject(params.length);
  相关解决方案