最近有人問我怎麼獲取存儲過程的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
(
@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>
<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());
Hashtable map = new Hashtable();
map.Add("testParam", testid);
mapper.Insert("GetAccountViaSP2", map);
Console.WriteLine(map["testParam"].ToString());
注意,在parammap定義的時候需要設置class=Hashtable,用class=int,就獲取不到!
希望對讀者有幫助!有任何問題可以發郵件給我[email protected]