如何使用iBatis.NET检索存储过程的返回值?下面的代码成功地调用了存储过程,但是QueryForObject调用返回0。
SqlMap
<procedure id="MyProc" parameterMap="MyProcParameters" resultClass="int">
MyProc
</procedure>
<parameterMap id="MyProcParameters">
<parameter property="num"/>
</parameterMap>C#代码
public int RunMyProc( string num )
{
return QueryForObject < int > ( "MyProc", new Hashtable { { "num", num } } );
}存储过程
create procedure MyProc
@num nvarchar(512)
as
begin
return convert(int, @num)
endFYI,我使用的是iBatis 1.6.1.0、.NET 3.5和Server 2008。
发布于 2010-03-17 14:13:56
不是很漂亮,但这个很管用:
SqlMap
<statement id="MyProc" parameterClass="string" resultClass="int">
declare @num int
exec @num = MyProc #value#
select @num
</statement>C#代码
public int RunMyProc( string num )
{
return QueryForObject < int > ( "MyProc", num );
}发布于 2011-04-05 09:51:24
您可能需要查看下面关于如何检索返回值的文章http://www.barebonescoder.com/2010/04/ibatis-net-stored-procedures-return-values/。
我在QueryForObject和Insert场景中使用了它,其中最后一条语句是存储过程中的返回语句。
特别注意"parameterMap“元素的类属性。它比上面的答案漂亮得多,我相信它更符合IBatis.Net的使用方式。
发布于 2010-03-17 14:07:43
存储过程没有像函数一样的返回值。
所以,我不认为那会起作用。尝试使用输出参数代替。
https://stackoverflow.com/questions/2462731
复制相似问题