首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用iBatis.NET获取存储过程的返回值

使用iBatis.NET获取存储过程的返回值
EN

Stack Overflow用户
提问于 2010-03-17 13:56:03
回答 4查看 7.6K关注 0票数 1

如何使用iBatis.NET检索存储过程的返回值?下面的代码成功地调用了存储过程,但是QueryForObject调用返回0。

SqlMap

代码语言:javascript
复制
<procedure id="MyProc" parameterMap="MyProcParameters" resultClass="int">
    MyProc
</procedure>

<parameterMap id="MyProcParameters">
    <parameter property="num"/>
</parameterMap>

C#代码

代码语言:javascript
复制
public int RunMyProc( string num )
{
    return QueryForObject < int > ( "MyProc", new Hashtable { { "num", num } } );
}

存储过程

代码语言:javascript
复制
create procedure MyProc
    @num nvarchar(512)
as
begin
    return convert(int, @num)
end

FYI,我使用的是iBatis 1.6.1.0、.NET 3.5和Server 2008。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-17 14:13:56

不是很漂亮,但这个很管用:

SqlMap

代码语言:javascript
复制
<statement id="MyProc" parameterClass="string" resultClass="int">
    declare @num int
    exec @num = MyProc #value#
    select @num
</statement>

C#代码

代码语言:javascript
复制
public int RunMyProc( string num )
{
    return QueryForObject < int > ( "MyProc", num );
}
票数 1
EN

Stack Overflow用户

发布于 2011-04-05 09:51:24

您可能需要查看下面关于如何检索返回值的文章http://www.barebonescoder.com/2010/04/ibatis-net-stored-procedures-return-values/

我在QueryForObject和Insert场景中使用了它,其中最后一条语句是存储过程中的返回语句。

特别注意"parameterMap“元素的类属性。它比上面的答案漂亮得多,我相信它更符合IBatis.Net的使用方式。

票数 1
EN

Stack Overflow用户

发布于 2010-03-17 14:07:43

存储过程没有像函数一样的返回值。

所以,我不认为那会起作用。尝试使用输出参数代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2462731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档