今天在写网上商城的时候,又碰到一问题,如何获取存储过程的outpu的参数呢?对于IBatis.Net这东西还真有点排斥,郁闷。在网上搜了一些资料后,终于找到了方法。 

以下是SQL:

SQL代码
  1. create proc sp_sys_addUser   
  2. (   
  3.     @userName    varchar(20),   
  4.     @ID    int    output  
  5. )   
  6. as  
  7. begin  
  8.     insert into tbuser(userName) value(@userName)   
  9.     set @ID = IDENT_CURRENT("tbUser")   
  10. end  
  11. go   

SQLMap里的写法: 

SQLMap:
  1. <parameterMaps>  
  2.   <parameterMap id="addUser_parmap" class="Hashtable">  
  3.     <parameter property="userName" column="userName"/>  
  4.     <parameter property="ID" column="ID" direction="Output" />  
  5.   </parameterMap>  
  6. </parameterMaps>  
  7.   
  8. <statements>  
  9.   <procedure id="addUser" parameterMap="addUser_parmap">  
  10.     sp_sys_addUser   
  11.   </procedure>  
  12. </statements>  

程序里的代码: 

C#代码
  1. int ID = 0;      
  2. Hashtable map = new Hashtable();      
  3. map.Add("userName", userName);      
  4. map.Add("ID", ID );      
  5. mapper.Insert("addUser", map);      
  6. Console.WriteLine(map["ID"].ToString());    

还有一点得注意的是,在parammap定义的时候需要设置class=Hashtable,如果用class=int,就获取不到output的值了!