public List getNodeDataSearch(String nt, String registerId, String employID,
int num, String batchNumber, String rperson,
String dateNum, String notNode, String districtCode) {
DBConnectionManager connManager = null;
Connection conn = null;
Commons Common = new Commons();
List ls = new ArrayList();
try {
connManager = DBConnectionManager.getInstance();
conn = connManager.getConnection("oracleHouse");
int n = 1;
if (nt.equals("new"))
n = 3;
CallableStatement procTemp = null;
if (nt.equals("99")) {
nt = "6";
procTemp = conn.prepareCall("{ call SP_NODEDATASEARCHWAIT.listData(?,?,?,?,?,?,?) }");
} else {
procTemp = conn.prepareCall("{ call SP_NODEDATASEARCH3.listData(?,?,?,?,?,?,?,?,?,?) }");
}
String tempNum = "";
if(num>0)
tempNum = num+tempNum;
procTemp.setString(1, nt);
procTemp.setString(2, registerId);
procTemp.setString(3, employID);
procTemp.setString(4, tempNum);
procTemp.setString(5, batchNumber);
procTemp.setString(6, rperson);
procTemp.setString(7, districtCode);
procTemp.setString(8, dateNum);
procTemp.setString(9, notNode);
procTemp.registerOutParameter(10, oracle.jdbc.OracleTypes.CURSOR);
procTemp.executeQuery();
ResultSet data = (ResultSet) procTemp.getObject(10);
while (data.next()) {
Vector vt = new Vector();
String deptIdTemp = Common.chgstr(data.getString("deptId")); String registerID = Common.chgstr(data.getString("register_id"));
vt.add(registerID);
String moduleID = data.getString("moduleId");
vt.add(Integer.valueOf(moduleID));
String businessName = Common.chgstr(data
.getString("business_name"));
vt.add(businessName);
String businessSubName = Common.chgstr(data
.getString("business_subname"));
vt.add(businessSubName);
String node = data.getString("node");
vt.add(node);
String nodename = Common.chgstr(data.getString("nodename"));
vt.add(nodename);
String owner = PersonRelationBean.findOwnerName(registerID);
vt.add(owner);
String statusName = Common.chgstr(data.getString("statusname"));
vt.add(statusName);
String name = Common.chgstr(data.getString("person"));
vt.add(name);
vt.add(data.getInt("businessID"));
vt.add(data.getInt("subBusinessID"));
vt.add(data.getInt("handleType"));
vt.add(data.getInt("menuswitch"));
vt.add(data.getInt("selectflag"));
String nodetype = data.getString("nodetype");
vt.add(nodetype);
String registertime = data.getString("rtime");
vt.add(registertime);
String btnum = Common.chgstr(data.getString("batchNumber"));
vt.add(btnum);
vt.add(deptIdTemp);
ls.add(vt);
}
data.close();
直接运行data.close();为什么中间while没有执行呢?请各位帮忙,谢谢!
int num, String batchNumber, String rperson,
String dateNum, String notNode, String districtCode) {
DBConnectionManager connManager = null;
Connection conn = null;
Commons Common = new Commons();
List ls = new ArrayList();
try {
connManager = DBConnectionManager.getInstance();
conn = connManager.getConnection("oracleHouse");
int n = 1;
if (nt.equals("new"))
n = 3;
CallableStatement procTemp = null;
if (nt.equals("99")) {
nt = "6";
procTemp = conn.prepareCall("{ call SP_NODEDATASEARCHWAIT.listData(?,?,?,?,?,?,?) }");
} else {
procTemp = conn.prepareCall("{ call SP_NODEDATASEARCH3.listData(?,?,?,?,?,?,?,?,?,?) }");
}
String tempNum = "";
if(num>0)
tempNum = num+tempNum;
procTemp.setString(1, nt);
procTemp.setString(2, registerId);
procTemp.setString(3, employID);
procTemp.setString(4, tempNum);
procTemp.setString(5, batchNumber);
procTemp.setString(6, rperson);
procTemp.setString(7, districtCode);
procTemp.setString(8, dateNum);
procTemp.setString(9, notNode);
procTemp.registerOutParameter(10, oracle.jdbc.OracleTypes.CURSOR);
procTemp.executeQuery();
ResultSet data = (ResultSet) procTemp.getObject(10);
while (data.next()) {
Vector vt = new Vector();
String deptIdTemp = Common.chgstr(data.getString("deptId")); String registerID = Common.chgstr(data.getString("register_id"));
vt.add(registerID);
String moduleID = data.getString("moduleId");
vt.add(Integer.valueOf(moduleID));
String businessName = Common.chgstr(data
.getString("business_name"));
vt.add(businessName);
String businessSubName = Common.chgstr(data
.getString("business_subname"));
vt.add(businessSubName);
String node = data.getString("node");
vt.add(node);
String nodename = Common.chgstr(data.getString("nodename"));
vt.add(nodename);
String owner = PersonRelationBean.findOwnerName(registerID);
vt.add(owner);
String statusName = Common.chgstr(data.getString("statusname"));
vt.add(statusName);
String name = Common.chgstr(data.getString("person"));
vt.add(name);
vt.add(data.getInt("businessID"));
vt.add(data.getInt("subBusinessID"));
vt.add(data.getInt("handleType"));
vt.add(data.getInt("menuswitch"));
vt.add(data.getInt("selectflag"));
String nodetype = data.getString("nodetype");
vt.add(nodetype);
String registertime = data.getString("rtime");
vt.add(registertime);
String btnum = Common.chgstr(data.getString("batchNumber"));
vt.add(btnum);
vt.add(deptIdTemp);
ls.add(vt);
}
data.close();
直接运行data.close();为什么中间while没有执行呢?请各位帮忙,谢谢!
肯定procTemp.getObject(10)为空,根本就没有。
你试试在pl/sql里执行存储过程试试结果
怎么在pl/sql中执行存储过程,其实上面用的存储过程我都不是很明白,能帮我解释一下吗?谢谢了
procTemp.executeQuery();
ResultSet data = (ResultSet) procTemp.getObject(10);是不是应该是下面这样? (2句改成下面1句。)
ResultSet data = (ResultSet)procTemp.executeQuery();
看看这一行data的下一行指针是否存在
没有报错信息,就是不往while()这个语句中跳呢?
你用PL/SQL developer里package body里找到相应的存储过程,?号的值用真正的值替换,
然后test执行就好了。
或者在sql*plus里直接执行也行。
网上搜一下如果执行存储过程就好了
——————————————————————————————————————————
这个和方法传的参数有关系吗,至于这个参数我不是很明白,就是知道值得就传了,不知道的用null表示的,不知道这里会出现问题吗?还有这个存储过程是不是先往里面存储然后再读出来是这样吗?是不是我存储的就不对,所以读取的时候就肯定不对了吧,是这样吗?我思路不是很清晰,望高人指点,谢谢!一定有报错信息的吧。还有这里奇怪
p……
[/Quote]
这个和方法传的参数有关系吗,至于这个参数我不是很明白,就是知道值得就传了,不知道的用null表示的,不知道这里会出现问题吗?还有这个存储过程是不是先往里面存储然后再读出来是这样吗?是不是我存储的就不对,所以读取的时候就肯定不对了吧,是这样吗?我思路不是很清晰,望高人指点,谢谢!