刚回过的,供参考:
http://community.csdn.net/Expert/topic/4326/4326482.xml?temp=.3133814
http://community.csdn.net/Expert/topic/4326/4326482.xml?temp=.3133814
解决方案 »
- 关于jfreechart产生的图形无法打印的问题
- Ant编译Java工程的问题Xms问题
- java.util.zip压缩包 解压问题
- 网站运行一段时间后必须重启tomcat才能访问
- 写了个加载图标的文件,可是怎么也显示不出图标出来,请高手指点一下,谢谢
- hibernate查询与修改问题
- 如何在jsp脚本中获取actionform中的值
- 请问:哪有 WebSphere Studio 最新版 下载
- 这两种实现的方式为什么不同(有关struts的checkbox)
- 求教!怎样用JBuilder的Corba和EJB功能?我的是黑的 :(
- 请高手帮忙解决!!!
- 关于jboss3.2.4负载均衡问题,急,高分相赠!
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("PARA", conn);
ARRAY mya = new ARRAY (desc, conn, needSave);
...
cs.setArray(1,mya);
方式两点注意:
1.PARA一定要大写
2.nls_charsetxx.zip(我是用nls_charset12.zip)要加入classpath
提示错误:ORA-00902: invalid datatype。是不是版本的问题啊?JDK1.4+Oracle9i+Jdbc(ojdbc14.jar)
另外,如果我要把para更改为不定长数组,在包中声明如下:
TYPE para IS TABLE OF VARCHAR2(50) INDEX by BINARY_INTEGER;
该如何使用?
这是因为你用cs.setObject(1,needSave);引起的不定长数组?没用过,觉得没必要,真的参数中的数据n多,且为不定长的,不如用流.
我接触Java时间不长,与Oracle之间传递参数的数据类型不断的实验,昨天郁闷了一天,最成功的是String和int,用BOOLEAN、Date都没有成功。比较笨,希望不要嫌烦,十分感谢!!
package dbtest;import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.*;public class oraart { public static void main(String[] args) {
try {
DriverManager.registerDriver ( new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@192.168.0.222:1521:csi", "system", "manager");
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("PARA", conn);
String[] needSave= {"2", "1"};
ARRAY mya = new ARRAY (desc, conn, needSave);
CallableStatement cs = conn.prepareCall("{ call saveAurhorize(?,?,?,?) }");
cs.registerOutParameter(4,OracleTypes.VARCHAR);
cs.setArray(1,mya);
cs.setInt(2,needSave.length);
cs.setInt(3,333);
cs.execute();
String p=cs.getString(4);
System.out.println(p);
}
catch(Exception e)
{
System.out.println(e);
}
}}
----------------------------------------------------------
create or replace type para as varray(1000) of varchar2(4000)
---------------------------------------------------------------
create or replace procedure saveAurhorize(
inputValue in para,
inputLength in number,
busiNo in number,
retValue out varchar2) is
begin
retValue:='111';
end;
-----------------------------------------------------------------------
结果为:
111