发布网友 发布时间:2022-04-09 01:09
共4个回答
懂视网 时间:2022-04-09 05:31
1.plsql 代码 create Procedure proc() begin select * from proctab; end; 1 create procedure proc1(v_no number(4)) 2 begin 3 select * from proc1 4 where id=v_no; 5 end; 2.Hibernate 存储过程调用的一种方法是,通过XML传统的映射方式去调用。 -》存储过程映射和领域模型中的实体的对应关系 复制代码 1 <class name="com.test.User" table="proctab"> 2 <id name="id" column="id"> 3 <generator class="native"/> 4 </id> 5 <property name="name" column="name" type="string" /> 6 <property name="age" column="age" type="integer" /> 7 </class> 8 <sql-query name="getUser" callable="true"> 9 <return alias="user" class="com.test.User"> 10 <return-property name="id" column="id" /> 11 <return-property name="name" column="name" /> 12 <return-property name="age" column="age" /> 13 </return> 14 {call proc()} 15 </sql-query> 复制代码 -》Hibernate API 对存储过程的调用 复制代码 1 Session ss= HibernateSessionFactory.getSession() 2 List li=ss.getNamedQuery("getUser").list(); 3 ss.close(); 4 5 Session ss= HibernateSessionFactory.getSession() 6 List li=ss.getNamedQuery("getUser").list(); 7 ss.close(); 复制代码 -》JDBC API 对存储过程的调用 复制代码 1 Session session =HibernateSessionFactory.getSession(); 2 Connection conn = session.connection(); 3 ResultSet rs =null; 4 CallableStatement call = conn.prepareCall("{Call proc()}"); 5 rs = call.executeQuery(); 6 rs.close(); 7 session.close(); 8 9 Session session =HibernateSessionFactory.getSession(); 10 Connection conn = session.connection(); 11 ResultSet rs =null; 12 CallableStatement call = conn.prepareCall("{Call proc()}"); 13 rs = call.executeQuery(); 14 rs.close(); 15 session.close(); 复制代码 -》直接使用 Hibernate createQuerySql调用存储过程 复制代码 1 Session session =HibernateSessionFactory.getSession(); 2 SQLQuery query = session.createSQLQuery("{Call proc()}"); 3 List list =query.list(); 4 session.close(); 5 6 Session session =HibernateSessionFactory.getSession(); 7 SQLQuery query = session.createSQLQuery("{Call proc()}"); 8 List list =query.list(); 9 session.close(); 复制代码 -》通过Hibernate API或者JDBC,API给存储过程传参 复制代码 1 CallableStatement call = conn.prepareCall("{Call proc(?)}"); 2 call.setString(1, 参数); 3 rs = call.executeQuery(); 4 5 CallableStatement call = conn.prepareCall("{Call proc(?)}"); 6 call.setString(1, 参数); 7 rs = call.executeQuery(); 复制代码 1 SQLQuery query = session.createSQLQuery("{Call proc(?)}"); 2 query.setString(0, 参数); 3 List list =query.list();
Hibernate调用Oracle的存储过程
标签:
热心网友 时间:2022-04-09 02:39
调用存储过程可以不写配置文件,直接在类中搞定! 有问题可以百度Hi 我!~追答写法是一样的,只要你存储过程有查询返回值
只要使用sqlQuery.list();方法就可以获取到查询List值了
带返回值的你试一下
Connection conn = session.connection();
ResultSet rs =null;
CallableStatement call = conn.prepareCall("{Call proc(?,?,?)}");
call.setString(0,"abc");
call.registerOutParameter(1, Types.VARCHAR);
call.registerOutParameter(2,Types.VARCHAR);
rs = call.executeQuery();
if(rs.next()){
System.out.println("存储过程得到的第一个返回值是:"+rs.getString(1));
System.out.println("存储过程得到的第二个返回值是:"+rs.getString(2));
}
热心网友 时间:2022-04-09 03:57
//数据恢复热心网友 时间:2022-04-09 05:31
你好,你的存储过程是什么样的,比如存储过程是无参数,还是输入参数,还是输出参数,我这有个例子,先贴出来是无参数的存储过程,如果需要其他形式的请留言!