存储过程有个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);