存储过程:create or replace procedure add_stu
(
   new_id in t_stu.stu_id%type,
   new_name in t_stu.s_name%type,
   new_c_class in t_stu.c_id%type
)
as
   c_number int;
begin     select count(*) into c_number 
   from t_class 
   where c_id=new_c_class;   if(c_number=0)then
   
     insert into t_class(c_id,c_name) 
     values(new_c_class,'新班级');
     
   end if;
     
     insert into t_stu(stu_id,s_name,c_id) 
     values(new_id,new_name,new_c_class);
     
     commit;
end;SQL中使用:call add_stu('d','xi','C05');Hibernate中不出错误!但数据库中什么都没有`````到底是怎么回事啊?!public static void main(String[] args) {
// TODO Auto-generated method stub
       Configuration  con = new Configuration().configure();
        SessionFactory sf = con.buildSessionFactory();
        Session session = sf.openSession();
        Transaction bt = session.beginTransaction();
        String sql = "call add_class(?,?,?)";
        Query q = session.createQuery(sql);
        q.setString(0, "ss");
        q.setString(1, "ss");
        q.setString(2, "c9");
        bt.commit();
        session.close();
        sf.close();
}

解决方案 »

  1.   

    修改一下哈刚才打错了String sql = "call add_stu(?,?,?)";
    public static void main(String[] args) {
            // TODO Auto-generated method stub
           Configuration  con = new Configuration().configure();
            SessionFactory sf = con.buildSessionFactory();
            Session session = sf.openSession();
            Transaction bt = session.beginTransaction();
            String sql = "call add_stu(?,?,?)";
            Query q = session.createQuery(sql);
            q.setString(0, "ss");
            q.setString(1, "ss");
            q.setString(2, "c9");
            bt.commit();
            session.close();
            sf.close();
        }
      

  2.   


    public static void main(String[] args) {
            Configuration  con = new Configuration().configure();
            SessionFactory sf = con.buildSessionFactory();
            Session session = sf.openSession();
            Transaction bt = session.beginTransaction();
            String sql = "{call add_stu(?,?,?)}";
            PreparedStatement st = session.connection().prepareStatement(sql);
            st.setString(1, "ss");        
            st.setString(2, "ss");
            st.setString(3, "c9");
            st.execute();
            bt.commit();
            session.close();
            sf.close();
        }      
      

  3.   

    或者lz试一试 String sql = "{call add_stu(?,?,?)}";