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

热点内容
testng编译 发布:2025-05-02 00:35:49 浏览:544
断点续传ftp服务器 发布:2025-05-02 00:34:12 浏览:678
安卓z版和安卓u版是什么意思 发布:2025-05-02 00:26:43 浏览:866
网银密码忘记哪里可以看 发布:2025-05-02 00:11:10 浏览:273
pythonserver框架 发布:2025-05-01 23:52:21 浏览:32
python空list定义 发布:2025-05-01 23:48:10 浏览:673
存储阵列双活 发布:2025-05-01 23:46:09 浏览:614
存储卡压缩 发布:2025-05-01 23:23:51 浏览:914
云服务器关机以后还能查到位置吗 发布:2025-05-01 23:19:51 浏览:510
编译失败3tabBar 发布:2025-05-01 23:18:15 浏览:196