数据库是oralce,我的存储过程有3个参数,其中,第三个为返回值,
在用jdbc调用的时候,如下:CallableStatement cs = null;
try {
cs = conn.prepareCall("call procName (?,?,?)");
cs.registerOutParameter(3, OracleTypes.INTEGER);
cs.setString(1, tablename);
cs.setString(2, fieldname);
} catch (SQLException e) {
e.printStackTrace();
}
请问,如果改用hibernate方式:
如下:
SQLQuery query = this.getSession().createSQLQuery("call procName (?,?,?)");
如何将第3个参数传进去呢??(第3个参数为返回值)
在用jdbc调用的时候,如下:CallableStatement cs = null;
try {
cs = conn.prepareCall("call procName (?,?,?)");
cs.registerOutParameter(3, OracleTypes.INTEGER);
cs.setString(1, tablename);
cs.setString(2, fieldname);
} catch (SQLException e) {
e.printStackTrace();
}
请问,如果改用hibernate方式:
如下:
SQLQuery query = this.getSession().createSQLQuery("call procName (?,?,?)");
如何将第3个参数传进去呢??(第3个参数为返回值)
Query query = session.getNamedQuery("procName");
query.setString设置参数
query.setString设置参数
List list = query.list();
Object obj=(Object)list.get(0);
你这个方法是需要再配置文件里面定义procName吧??
请问,如果用this.getSession().createSQLQuery("call procName (?,?,?)");
方式可以得到返回值吗??
SQLQuery query=this.getSession().createSQLQuery("{call procName(?,?,?)}");
query.setString(0,x);
query.setString(1,xxx);
query.setString(2,xxxx);
List list = query.list();
这样就得到了!
cs.registerOutParameter(3, OracleTypes.INTEGER);
这种方式传入的,
我是想请问如果用hibernate,怎么把第三个返回值参数传进去呢??
等于第三个参数应该是个变量,
另外,在hibernate中,存储过程的参数是从0开始的,是吗??