IBatis.Net如何获取存储过程的Output的参数值

最近有人问我怎么获取存储过程的output的参数值,由于我最近没有用Ibatis.net,所以就从文档中找到的param的xml,也就没有在意,但后来有人说调不通,今天早上又收到一份留言,所以我早上作了测试!也出现获取不到数据的问题,但最后还是解决了!我的测试环境是sqlserver2005/vs2005/ibatis.net2.0
如下:
procedure:

create proc sp_output
(
    
@testParam    int    output
)
as
begin
    
set @testParam = 10
end
go

xml:
  <parameterMaps>
    
<parameterMap id="select-params2" class="Hashtable">
      
<parameter property="testParam" column="testParam" direction="Output" />
    
</parameterMap>
  
</parameterMaps>

  
<statements>

    
<procedure id="GetAccountViaSP2" parameterMap="select-params2">
      sp_output
    
</procedure>
  
</statements>

code:
int testid = 0;
            Hashtable map 
= new Hashtable();
            map.Add(
"testParam", testid);

            mapper.Insert(
"GetAccountViaSP2", map);

            Console.WriteLine(map[
"testParam"].ToString());

注意,在parammap定义的时候需要设置class=Hashtable,用class=int,就获取不到!
希望对读者有帮助!有任何问题可以发邮件给我mapley@gmail.com
posted @ 2006-11-04 09:08 福娃 阅读(2091) 评论(13)  编辑 收藏 所属分类: IBatis.Net

  回复  引用    
#1楼  2006-11-05 17:35 | hpy223 [未注册用户]
不好意思!是我搞错了,
IList list= mapper.QueryForList("GetAccountViaSP2", map);
testid = (int)map["testParam"];
return list;
没有给testid 重新赋值,现在OK了!
  回复  引用  查看    
#2楼 [楼主] 2006-11-06 08:17 | 福娃      
也谢谢你,让我更进一步的深入了解,不至于那么浮躁!
  回复  引用  查看    
#3楼  2006-11-06 19:06 | SHY520      
我在想,如果你不写程序了,会不会手痒痒呢?嘿嘿
  回复  引用  查看    
#4楼  2006-11-07 11:59 | SHY520      
看了你的这篇文章,我想到一个问题,就是如何用IBatisnet来得到存储过程的返回值(returnValue),自己看了一下,没找到解决方法,特来取经,嘿嘿!
我看了它的参数类型好象只有input,output和inoutput,而没有returnValue类型的.郁闷.
  回复  引用  查看    
#5楼 [楼主] 2006-11-07 12:39 | 福娃      
mapper操作的返回值就是returnValue
如:
int categoryID = ( int ) sqlMap.Insert ( "InsertCategoryViaStoreProcedureWithReturn", category );
  回复  引用    
#6楼  2006-12-08 12:57 | microsystem [未注册用户]
首先感谢福娃,回头赶紧试试!

还有个疑问不知道 如下方式是否可以取得?

[
CREATE PROCEDURE dbo.sp_CopySA
@SaID int
AS
DECLARE
@NewSaID int

Set @NewSaID = 1

return @NewSaID
]


2:还请看看我得提问 ,希望在 iterate 标签内 再用其他比较标签
http://shanyou.cnblogs.com/archive/2005/08/02/206026.aspx
  回复  引用    
#7楼  2007-04-02 14:50 | BUG [未注册用户]
看过你的两篇稿,没有一个能执行通过的

  回复  引用    
#8楼  2007-04-03 07:57 | maplye [未注册用户]
这些代码都是在我的机器上测试通过,大概是由于版本的问题吧。谢谢你的关注!
  回复  引用    
#9楼  2008-02-28 17:25 | 小强wang945 [未注册用户]
CREATE OR REPLACE PROCEDURE do_hand_studentcard_login(
device_msisdn IN VARCHAR2,
device_id IN VARCHAR2,
card_id IN VARCHAR2,
student_id IN VARCHAR2,
request_time IN date,
--
valid_flag OUT NUMBER, Family_num OUT NUMBER,
Family_msisdn OUT VARCHAR2,
Family_relation OUT VARCHAR2,
message_num OUT NUMBER,
System_time OUT date)
IS

像这种存储过程怎么调用啊