Accessing SQL error messages

I’m looking for ways to get hold of the error message produced by an SQL
query.

The query in question is calling a stored procedure in a legacy MSSQL
system,
and an ActiveRecord::StatementInvalid exception is being raised. Is
there any
way to get information about the exception (like the error message) so
it can be
displayed to the user?

In a begin…rescue block I can access .message as follows, but I’d
rather not be
parsing that to get the error message on the third line for obvious
reasons

irb(Mssql):005:0> err.message
=> “DBI::DatabaseError: Execute\n OLE error code:80040E14 in
Microsoft OLE DB
Provider for SQL Server\n Invalid surname, title or address.\n
HRESU
LT error code:0x80020009\n Exception occurred.: EXEC
lgg_createuserdetails
‘Gareth’, [snip], 0”

Thanks guys,
Gareth

On 04/09/06, Gareth A. [email protected] wrote:

The query in question is calling a stored procedure in a legacy MSSQL system,
and an ActiveRecord::StatementInvalid exception is being raised. Is there any
way to get information about the exception (like the error message) so it can be
displayed to the user?

In a begin…rescue block I can access .message as follows, but I’d rather not be
parsing that to get the error message on the third line for obvious reasons

Other than parsing .message, there’s no handy way I know to get the
error message produced by SQL Server. As errors thrown should
indicate exceptional circumstances, the messages within them are
really intended for debugging purposes, rather than to display to end
users.

The message you seem to be trying to extract looks more like a
validation failure. A better approach would be to perform validation
before calling the stored procedure. Other than that, parsing the
error message is your only hope.

Tom