ho una stored procedure in un database SQL Server 2005 che dispone di una dichiarazione come questa:SQL Server Raiserror non causano un'eccezione nel client .NET
IF @Condition = 0
BEGIN
RAISERROR('some error message',16,1)
RETURN
END
e si chiama da un client C# in questo modo:
try
{
SomeVariable = SqlHelper.ExecuteScalar(GetConnectionString(), "MySP", new object[] { param1, param2});
}
catch (SqlException e)
{
Console.WriteLine(e.Message);
}
Tuttavia non viene sollevata alcuna eccezione. La condizione nell'SP è sempre vera per i test. Per verificare ciò, ho copiato la chiamata da SQL Server Profiler e l'ho eseguita in una finestra di query e l'ErrorMessage è stato stampato, il che significa che l'errore è stato generato.
Non so cosa sta succedendo.
Hai provato a inserire un punto di interruzione nella tua dichiarazione di cattura, per vedere se è addirittura stato eseguito? –
Sì. È così che ho scoperto che non funziona. I livelli di gravità – Abdu