Как динамически получить столбец, который вызвал OracleException - PullRequest
0 голосов
/ 10 ноября 2011

Если ORA-12899 возвращен из оператора вставки или обновления.Как извлечь имя столбца из OracleException без разбора строки?

ORA-12899: слишком большое значение для столбца "SCHEMA". "TABLENAME". "COLUMNNAME" (фактическое: 175, максимум: 23).

Я хотел бы сделать что-то вроде этого:

try
{
    // Insert code.
}
catch (OracleException orclEx)
{
    if (orclEx.Number == 12899)
    {
        string columnName = GetColumnName(orclEx);
        throw new Exception(columnName + " value is too long.", orclEx);
    }
}
finally
{
    // Finally code
}

1 Ответ

0 голосов
/ 10 ноября 2011

Я не знаю, как это сделать без разбора сообщения об ошибке. Я пытаюсь предотвратить попадание плохих данных в базу данных. Итак, в форме ASP.NET я использую валидатор регулярных выражений, как это. Этот предотвращает прохождение более 100 символов. Вы можете ввести более 100 символов, но при нажатии кнопки «ОК» или «Отправить» данные не будут обрабатываться до тех пор, пока вы не сократите ввод.

Кроме того, я использую сводку проверки для отображения ErrorMessage.

<asp:RegularExpressionValidator ID="regExpInspectionNotes" runat="server" SetFocusOnError="true" Text="*"  ControlToValidate="txtInspectionNotes" ErrorMessage= "Maximum length of inspection notes is 100 characters." ValidationExpression="^[\s\S]{1,100}$" Display="Dynamic"> </asp:RegularExpressionValidator>

Кроме того, я передаю значения в хранимую процедуру и выполняю обновление с использованием PL / SQL.

Что касается синтаксического анализа сообщения об ошибке, на самом деле не составит труда получить имя столбца при разборе.

...