declare @sql varchar(8000) set @sql = 'select convert(char(7),cor_creat_date,120) as 日期' select @sql = @sql + ',sum(case user_se_name when '''+user_se_name+'''then 1 else 0 end) ['+user_se_name+']'from (select distinct user_se_name from cus_cor_cus join lim_user on cor_user_code=user_code) as a select @sql = @sql+' from cus_cor_cus join  lim_user on cor_user_code=user_code group by convert(char(7),cor_creat_date,120)' exec(@sql) 
运行结果 
日期    张三    李四 
2009-02  10      12 
2010-01    2        5 
我想用这个结果集上面的sql怎么改成存储过程?在SSH框架中怎么调用? 
 
 

解决方案 »

  1.   

    Hibernate有一个session.getNamedQuery(过程名)这个过程名在
    <hibernate-mapping>
      <class catalog="数据库名" name="com.Entity">
        <id name="id" type="java.lang.String">
          <column length="18" name="str1"/>
          <generator class="assigned"/>
        </id>
        <property name="name" type="java.lang.String">
          <column length="300" name="str2"/>
        </property>
      </class>
      <sql-query callable="true" name="这个名字和上面调用的要一样.">
          <return alias="entity" class="com.Entity">这个实体,就是一个Javabean里有下面的属性.str1和上一段要对应,上面几个属性,这几就有几个.而com.Eitity里就有几个.
          <return-property column="str1" name="str1"/>....................
        </return>
          {call  数据库过程名(?)}
       </sql-query>
    调用 List rs=session.getNamedQuery('myProcdure').setString().list();
    返回的是一个 com.Entity对象.然后就知道怎么取了吧.....
    这样我觉得不太方便,属性是固定的.Java不是有调用过程的?那就直接调用啊.
    Connection conn=HibernateSessionFactory.getSession().connection();这个获得数据库连接,接下来就和JDBC里的Connection一样了.
      

  2.   

    忘 了,说了.上面的配置文件,和其它实体一样,是一个HBM.xml对应一个实体.也要以Hibernate.cfg.xml里添加进去.
      

  3.   


    CallableStatement p_proc = null;try {     Connection p_conn = XXX.getConnection();
         
         String p_spString = "{ call text() } ";

         p_proc = p_conn.prepareCall(p_spString);     p_proc.execute();
    } catch (SQLException sqle) {} finally {   
        p_proc.close();
    }
    这是JDBC调用存储过程的方法。
      

  4.   


    ResultSet rs = p_proc.getResultSet();
      

  5.   

    你Google下getHibernate() 调用存储过程,就有的!
      

  6.   

    declare @sql varchar(8000) set @sql = 'select convert(char(7),cor_creat_date,120) as 日期' select @sql = @sql + ',sum(case user_se_name when '''+user_se_name+'''then 1 else 0 end) ['+user_se_name+']'from (select distinct user_se_name from cus_cor_cus join lim_user on cor_user_code=user_code) as a select @sql = @sql+' from cus_cor_cus join  lim_user on cor_user_code=user_code group by convert(char(7),cor_creat_date,120)' exec(@sql) 
    上面的好弄成存储过程吧?
      

  7.   

     hibernate 里这个方法XXX.getConnection()好像要被废除了吧