Я знаю, что этот ответ может быть не тем, что вы ищете, так как на самом деле он не отвечает на ваш вопрос, я немного подумал и в конце концов подумал, что это может помочь.
Я не знаю, сколько у вас запросов и насколько велика ваша программа ... но для целей отладки я хотел сделать что-то похожее для всех моих запросов, как для простого текста, так и для хранимых процедур. Поэтому я написал простой класс-обертку, который позволяет мне выполнять простые текстовые запросы / хранимые процедуры с параметрами и без параметров. Затем, если выполняется исключение, я перехватываю его, создаю новое пользовательское исключение с исходным исключением, выполненным запросом и всеми параметрами и возвращаю все это в пользовательском сообщении. Я использую Oracle в своей оболочке, но она почти такая же:
Public Function ExecuteCommandQuery(ByRef oCMD As OracleClient.OracleCommand) As DataTable
oCMD.Connection = _oConn
Dim dt As New DataTable
'exception if one occured'
Dim DBException As Exception = Nothing
Try
'get an adapter'
Dim cmd As New OracleDataAdapter(oCMD)
'Fill the data table and ket a count of records returned'
cmd.Fill(dt)
Catch ex As Exception
'capture exception, and rethrow after properly closing the Oracle Connection'
DBException = ex
Finally
_oConn.Close()
End Try
'if exception occured, rethrow'
If DBException IsNot Nothing Then
Throw New Exception( _
String.Format("A database error occured: {0} " + _
Environment.NewLine + Environment.NewLine + " --- " + _
Environment.NewLine + Environment.NewLine + _
" Your query: {1}" + _
Environment.NewLine + Environment.NewLine + " --- " + _
Environment.NewLine + Environment.NewLine + _
" Your Parameters: " + Environment.NewLine + "{2}" _
, DBException.ToString(), oCMD.CommandText, GenerateParameterErrorInfo(oCMD)))
End If
Return dt
End Function