当前位置:首页 » 存储配置 » oracle存储过程参数数组

oracle存储过程参数数组

发布时间: 2023-06-29 18:52:36

A. Oracle 存储过程 数组做参数 求实例

packtest.test(v_string,v_int);
你的v_string输入参数没有初始化。
v_string system.packtest.string_array := system.packtest.string_array('a','b','c');

B. WebService调用oracle存储过程,传入数组参数

你要在webservice中编写相应的调用存储过程的接口,具体看你应用的什么语言技术。比如下面java调用存储过程如下:
Session session = HibernateSessionFactory.getSession();
//连接对象
Connection conn = null;
//数据集对象
ResultSet rs = null;
//用来取得表列明的 对象
ResultSetMetaData rsmd = null;
CallableStatement proc = null;
conn = session.connection();
conn.setAutoCommit(false);
try {

if (conn != null) {
proc = conn.prepareCall("{call 存储过程包名过程名(n个传入参数对应n个问号,返回参数或游标?占位) }");
// 如下过程PKG_GETDATA有4个传入参数,所有在程序包是PKG_QUERY
//proc = conn.prepareCall("{call PKG_QUERY.PKG_GETDATA(?,?,?,?,?) }");
proc.setString(1, 参数);
//依次按照传入参数顺序与?问号位置传入所有参数
//最后传入n个参数后一位的返回游标
//proc.registerOutParameter(n+1, oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet) proc.getObject(n+1);
conn.commit();
}

可以将上面代码写成一个公用的调用存储过程的通用接口。

别人调用你的webservice 可以具体的参数个数及顺序传递给你的接口,也可以传递一个object数组

C. oracle 存储过程,如何传入一个数组

这个是不行的,数组内容必须首先在存储过程里定义好数组类型,然后给予定义好的数据类型定义数组型变量。存储过程的入参是做不到的。一般情况下,采用字符串的方式,并给每项用特定的分隔符的方式传入,然后在存储过程中按照分隔符解析出每一项,插到存储过程的定义的数组的每一项上去。

D. 如何给存储过程,传一个数组参数

这个是我自己写的一个例子,你看看:在命令窗口执行以下语句,创建自定义类型NESTEDARRAY。;在存储过程中使用自定义类型NESTEDARRAY。PROCEDUREGET_ARR_RESULT(INPUTARRAYINNESTEDARRAY,AROUTNESTEDARRAY)ISBEGINAR:=NESTEDARRAY();FORIIN1..INPUTARRAY.COUNTLOOPAR.EXTEND;AR(I):=I||INPUTARRAY(I);ENDLOOP;ENDGET_ARR_RESULT;Java代码:importjava.sql.Connection;importjava.sql.SQLException;importoracle.jdbc.OracleCallableStatement;importoracle.jdbc.OracleTypes;importoracle.sql.ARRAY;importoracle.sql.ArrayDescriptor;importoracle.sql.Datum;/***Java获取Oracle存储过程返回自定义类型*@authorluckystar**/{/***@paramargs*/publicstaticvoidmain(String[]args){Connectioncon=null;OracleCallableStatementocs=null;Stringsql="{calltest.GET_ARR_RESULT(?,?)}";try{con=DBUtil.dbUtil.getConnection();ocs=(OracleCallableStatement)con.prepareCall(sql);String[]params={“10001”,”10003”};ArrayDescriptorarrayDesc=ArrayDescriptor.createDescriptor("NESTEDARRAY",con);ARRAYinputArray=newARRAY(arrayDesc,con,params);ocs.setARRAY(1,inputArray);ocs.registerOutParameter(2,OracleTypes.ARRAY,"NESTEDARRAY");ocs.execute();ARRAYarray=ocs.getARRAY(2);Datum[]datum=array.getOracleArray();for(inti=0;i

热点内容
百度云资源加密 发布:2025-03-20 14:36:52 浏览:448
k令密码锁什么意思 发布:2025-03-20 14:14:04 浏览:161
python读取png 发布:2025-03-20 14:07:27 浏览:62
家政小程序源码 发布:2025-03-20 14:00:33 浏览:495
mfc串口源码 发布:2025-03-20 13:51:14 浏览:401
推流服务器地址是什么 发布:2025-03-20 13:48:49 浏览:763
编译不报错怎么回事 发布:2025-03-20 13:48:00 浏览:218
pythonideemacs 发布:2025-03-20 13:37:56 浏览:505
ftpsite 发布:2025-03-20 13:05:57 浏览:195
php执行语句 发布:2025-03-20 12:58:54 浏览:11