使用sql server CLR项目生成的存储过程不返回值问题

1.sql server CLR项目中的存储过程实例:

[SqlProcedure]
    public static SqlInt32 spSearchFulltextMall(SqlString keywords, SqlString excludedKeywords,  SqlInt32 startRow, SqlInt32 endRow)
    {
        // 在此处放置代码
        
        int result=-1;

        return result;

    }

2.在类库中调用以上存储过程,接收存储过程的返回值:

parameters[n] = new SqlParameter("returnValue", SqlDbType.Int);
        parameters[n].Direction = ParameterDirection.ReturnValue;

其中n为parameters.Length - 1

接收返回值:var count = (int)(parameters[parameters.Length - 1].Value ?? 0);

3.问题:

在sql 2005中有返回值,而在sql 2008中有时没有返回值,当把sql server CLR项目重新部署,在大约半天时间内有返回值,之后便恢复到之前无返回值状态。

4.解决办法:

a.修改存储过程:

[SqlProcedure]
    public static 
void spSearchFulltextMall(SqlString keywords, SqlString excludedKeywords,  SqlInt32 startRow, SqlInt32 endRow,out SqlString result)
    {
        // 在此处放置代码
        
        result=-1;

    }

b.修改接收参数:

parameters[n] = new SqlParameter("returnValue", SqlDbType.Int);
        parameters[n].Direction = ParameterDirection.Output;

其中n为parameters.Length - 1

接收返回值:var count = (int)(parameters[parameters.Length - 1].Value ?? 0);

至此,存储过程返回值正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值