我创建了一个存储过程来从动态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;