当前位置:首页 » 存储配置 » 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-02-05 06:58:45 浏览:576
刺客信条4解压后 发布:2025-02-05 06:55:23 浏览:901
icophp 发布:2025-02-05 06:54:26 浏览:763
云服务器如何安装nginx 发布:2025-02-05 06:47:16 浏览:95
福州职场解压方式 发布:2025-02-05 06:36:31 浏览:557
c语言源程序的语句分隔符是 发布:2025-02-05 06:06:05 浏览:304
第一弹怎么上传视频 发布:2025-02-05 06:06:04 浏览:997
策略树算法 发布:2025-02-05 06:00:31 浏览:610
存储光盘数据恢复 发布:2025-02-05 05:43:50 浏览:384
android位置信息吗 发布:2025-02-05 05:43:45 浏览:440