从存储过程(sql Server和c# ADO.NET)的动态sql中获取返回值



我创建了一个存储过程来从动态sql获取返回值。我得到以下异常:

String[1]: Size属性的大小为无效的0。

我的proc:

CREATE proc [dbo].[Review_Get_PrePopValue](@sqlQuery nvarchar(500), @display nvarchar(200) OUTPUT)
as
EXEC sp_executesql @sqlQuery,   
    @display OUTPUT 
我代码:

public string GetAnswerValue(string contentSQL, string parameter, string parameterValue)
{
    string sqlstatement = contentSQL.Replace(parameter, parameterValue);
    using (var conn = new SqlConnection(_connectionString))
    {
        string prePopValue;
        SqlCommand comm = new SqlCommand();
        comm.Connection = conn;
        comm.CommandType = CommandType.StoredProcedure;
        comm.CommandText = "Review_Get_PrePopValue";
        comm.Parameters.Add(new SqlParameter("@sqlQuery", SqlDbType.NVarChar)).Value = sqlstatement; 
        comm.Parameters.Add(new SqlParameter
        {
            Direction = ParameterDirection.Output,
            ParameterName = "@display",
            SqlDbType = SqlDbType.NVarChar
        });
        conn.Open();
        comm.ExecuteNonQuery();
        prePopValue = comm.Parameters["@display"].Value.ToString();
        return prePopValue;
    }
}

我的sql字符串:

Select @display = Grant_Number From GMIS_Grants where grant_id=1

Direction = ParameterDirection。输出,ParameterName = "@display", Size = 200, SqlDbType = SqlDbType。NVarChar

需要设置nvarchar的大小

From MSDN

对于双向、输出参数和返回值,必须设置Size的值。

同时,在你的SP后面加上这个。

SELECT @display;

相关内容

  • 没有找到相关文章

最新更新