-1

我正在尝试在 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'

请问有什么帮助吗?谢谢詹姆

4

1 回答 1

0

果然,SqlInt32似乎没有实现IConvertible

我猜在您的存储过程中的某个地方,您正在调用Convert.ToInt32以从 SqlInt32 中提取整数值——这将不起作用,因为该结构没有实现此接口。

它确实有一个明确的转换

    int id = (idUsuario.IsNull ? -1 : (int)idUsuario);

或者,

    int? nId = (idUsuario.IsNull ? (int ?)null : (int)idUsuario);

你能用那个吗?

于 2014-07-26T18:51:25.283 回答