使用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);

至此,存儲過程返回值正常。

發佈了40 篇原創文章 · 獲贊 7 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章