oracle存储过程中式用集合做参数 150

有个表tb_test,字段test1,test2,test3想在java端传个list到一个存储过程list.add('v1,v2,v3');list.add('a1,a... 有个表tb_test,字段test1,test2,test3
想在java端传个list到一个存储过程
list.add('v1,v2,v3');
list.add('a1,a2,a3');

在储存过程中循环这个list,然后通过逗号分隔,循环插入.类似
insert tb_test values('v1','v2','v3');
insert tb_test values('a1','a2','a3');

这个能实现吗,该怎么写?
展开
 我来答
badkano
2009-07-08 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885371
团长

向TA提问 私信TA
展开全部
可以取,用substr函数和instr函数共同实现,但是实现起来不是太容易,费了好大劲给你取了v1和v2,那个v3你自己照个写一写吧,全当自己学习了

select substr('v1,v2,v3',1,instr('v1,v2,v3',',',1,1)-1) from dual;

select substr('v1,v2,v3',instr('v1,v2,v3',',',1,1)+1,(instr('v1,v2,v3',',',instr('v1,v2,v3',',',1,1)-1,2)-(instr('v1,v2,v3',',',1,1)+1))) from dual;

这两句在oracle中可直接运行,其中'v1,v2,v3'你可以用某个字段来代替
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
奔驰M888
2009-07-08 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1846
采纳率:0%
帮助的人:2708万
展开全部
1、为什么要在oracle存储过程中循环list呢,java中循环list连接出【insert tb_test values('v1','v2','v3');】这样的字符串后,再执行它岂不是方便很多。
2、虽然oracle的功能很强大,但是有时候用应用程序很简单就能解决的问题还是用应用程序来的快些,用java循环list要比用存储过程循环list方便的多哦。

---
以上,希望对你有所帮助。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WonderThing
2009-07-08 · TA获得超过183个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:202万
展开全部
应该实现不了,存储过程调用的oracle里面,
你只能用到oracle 里面的对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
祚胤17
2009-07-21 · TA获得超过786个赞
知道大有可为答主
回答量:1149
采纳率:82%
帮助的人:263万
展开全部
22.批量执行SQL和存储过程
//import java.sql.*;
Connection conn = null;
PreparedStatement pst = null;
CallableStatement cs = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@localhost:1521:huapu"; // orcl为数据库的SID
conn = DriverManager.getConnection(url,%%2,%%3);
cs = conn.prepareCall("{call abc(?,?}");
pst = conn.prepareStatement("Insert Into grade(%%1) Values (?)");
pst.setString(1, "");
// pst.setInt(2,%%2);
pst.addBatch();
pst.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (pst != null)
pst.close();
if (cs != null)
cs.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式