怎么调用带输出参数的存储过程?
这个是存储过程:
CREATE OR REPLACE PROCEDURE SP_SELECT_T_USER(
  V_RESULT OUT SYS_REFCURSOR,
 V_LOGIN_NAME IN VARCHAR2,
  V_LOGIN_PWD IN VARCHAR2
)
AS
BEGIN
  -- 查询用户表 T_USER
  OPEN V_RESULT FOR
  SELECT  *  FROM T_USER
  WHERE LOGIN_NAME=V_LOGIN_NAME AND LOGIN_PWD=V_LOGIN_PWD;END ;
求大牛指导!!!!!
在配置文件中怎么写 ?在程序中通过getHibernateTemplate().findByNamedQuery(hqlName, paras);方法调用。求指导!!!

解决方案 »

  1.   

    现学现答,测试下看看:getHibernateTemplate().execute(new HibernateCallback() { 
                    public Object doInHibernate(Session session) { 
                        try { 
                            Connection conn = session.connection();                         String sql = "{call SP_SELECT_T_USER(?,?,?)}"; 
                            CallableStatement stmt = conn.prepareCall(sql);
                            stmt.registerOutParameter(1, OracleTypes.CURSOR);  
                            stmt.setString(2, "name"); 
                            stmt.setString(3, "password"); 
                            stmt.execute(); 
                        } catch (Exception e) { 
                                    e.printStackTrace(); 
                            } 
                        }                     return (ResultSet)stmt.getObject(1);
                    } 
                }); 获取使用spring中的api来处理,自己去学了;
      

  2.   

    至于根据getHibernateTemplate().findByNamedQuery(hqlName, paras);
    应该去了解下hibernate是怎样配置的;
      

  3.   

    注册存储过程中的传出参数stmt.registerOutParameter(0,OracleTypes.??)获取传出参数的返回结果
    stmt.getObject(0)
      

  4.   

    @SuppressWarnings("unchecked")
        public List findCreateSqlMap(final String sql,final Map parameter) {
            List<Map> list = getHibernateTemplate().executeFind(new HibernateCallback(){
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    SQLQuery query = session.createSQLQuery(sql);
                    query.setProperties(parameter).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                    return (List<Map>)query.list();
                }});
            return list;
        }    @SuppressWarnings("unchecked")
        public List<Map> findCreateSqlMap(final String sql,final Object[] parameter) {
            List<Map> list = getHibernateTemplate().executeFind(new HibernateCallback(){
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    SQLQuery query = session.createSQLQuery(sql);
                    for(int i=0;i<parameter.length;i++){
                        query.setParameter(i, parameter[i]);
                    }
                    query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                    return (List<Map>)query.list();
                }});
            return list;
        }