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

oracle存储过程参数集合

发布时间: 2023-06-16 00:58:30

① oracle 存储过程参数的问题

方案1:
(1)传入前将单位拼接为串,格式如下:‘单位1,单位2,单位3',即'43,4301',用逗号分割数据。
(2)查询条件修改如下:
where instr(传入的串,单位所在列)>0;
(3)注意 单位这个列不能有空的情况,否则需要加上nvl(单位,‘@’),字符可以自拟;
方案2:传入前将复选后的单位放入PL/SQL表,再将PL/SQL表作为参数进行传递;

如果复选的不是很大,没有超过varchar2(4000)的话,方案1能实现。注意对参数最好加限制substrb(单位串,1,你期望的限制),这个限制可依据性能而定,一般复选框也不会一页显式太多,所以不必担心串的大小。

② 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数组

热点内容
java阿里 发布:2025-03-23 05:52:52 浏览:108
惠普服务器如何删掉raid 发布:2025-03-23 05:51:32 浏览:555
如何自学linux 发布:2025-03-23 05:50:10 浏览:842
安卓系统怎么删除短信 发布:2025-03-23 05:40:44 浏览:117
c语言编译错误与崩溃 发布:2025-03-23 05:34:13 浏览:590
uc浏览器视频缓存在哪里 发布:2025-03-23 05:30:40 浏览:357
添加到收藏夹的脚本代码 发布:2025-03-23 05:22:42 浏览:646
原神什么配置顶配 发布:2025-03-23 05:22:00 浏览:577
c程序总是编译不过 发布:2025-03-23 05:19:08 浏览:683
刷机网站源码 发布:2025-03-23 05:08:41 浏览:570