当前位置:首页 » 存储配置 » 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数组

热点内容
sql数据库入门到精通 发布:2025-09-13 20:13:50 浏览:736
微信设密码锁在哪里设华为手机 发布:2025-09-13 20:04:03 浏览:142
电脑代理服务器怎么看 发布:2025-09-13 19:40:52 浏览:921
c语言架构 发布:2025-09-13 19:26:26 浏览:830
app框架源码 发布:2025-09-13 19:17:56 浏览:926
sql数据库的修复软件 发布:2025-09-13 19:14:13 浏览:305
java短期培训多少钱 发布:2025-09-13 18:32:52 浏览:622
鸟哥的linux私房菜架设 发布:2025-09-13 18:24:18 浏览:115
ts缓存编译 发布:2025-09-13 18:14:58 浏览:527
哈弗h6盲区监测哪个配置有 发布:2025-09-13 17:32:39 浏览:203