我正在尝试在Visual Studio 2012中调试CLR存储过程。当我调用它时,会发生此错误并且不会调用CLR存储过程:
A .NET Framework error occurred during execution of user-defined routine or aggregate "CalculateResultByUser":
System.InvalidCastException: No se puede convertir un objeto de tipo 'System.Data.SqlTypes.SqlInt32' al tipo 'System.IConvertible'.
System.InvalidCastException:
en System.Convert.ToInt32(Object value)
en StoredProcedures.CalculateResultByUser(SqlInt32 idUsuario, SqlDateTime fechaInicio, SqlDateTime fechaFin)
这是CLR存储过程定义:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void CalculateResultByUser(SqlInt32 idUsuario, SqlDateTime fechaInicio, SqlDateTime fechaFin)
{
}
这就是我试图称之为:
EXEC CalculateResultByUser 5, '2014-07-26 00:00:00', '2014-07-26 23:59:59'
请帮忙吗? 谢谢 海梅
答案 0 :(得分:0)
果然,SqlInt32似乎没有实现IConvertible。
我猜你的存储过程中某处正在调用Convert.ToInt32从SqlInt32中提取整数值 - 这不起作用,因为这个结构没有实现这个接口。
int id = (idUsuario.IsNull ? -1 : (int)idUsuario);
或者
int? nId = (idUsuario.IsNull ? (int ?)null : (int)idUsuario);
你能用吗?