ORA-01830 Oracle Исключение из .net хранимых вызовов Proc - PullRequest
2 голосов
/ 28 декабря 2011

Я передаю даты в хранимую процедуру Oracle. Я продолжаю получать указанное выше исключение. Это исключение, которое я предполагаю, вызвано неправильным форматом dateTime с моей стороны. Сохраненный процесс требует военного времени для дат и находится в формате 28.12.12 11:29:59. Хранимая процедура берет строки и преобразует их в нужное время внутри хранимой процедуры ... Вот как я настраиваю правильный параметр ...

cmd.Parameters.Add(colName[i], DateTime.Parse(trueDateStr).ToString("dd-MMM-yy HH:mm:ss"));

Один сохраненный параметр proc, который вызывает у меня расстройство желудка, это ...

ACTIVE_DATEIn
to_date(ACTIVE_DATEin,'DD-MON-YY')

Вторая строка - это строка чуть позже в сохраненном процессе ... Первая строка - это фактический параметр, который передается внутрь. Иногда этот параметр может быть нулевым ... Что я делаю, я проверяю, если это null, а затем я передаю пустую строку ... Будет ли эта пустая строка вызвать ошибку? Должен ли я передать какое-то значение Null Date или пустое значение даты? Что вы думаете об этом?

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Скорее всего, проблема в том, что вы передаете строку, содержащую дату и время, а Oracle ожидает только часть даты.Это именно то, что говорится в сообщении об ошибке (после того, как часть даты была успешно проанализирована, во входной строке все еще есть символы, но не в формате даты):

ORA-01830: изображение в формате даты заканчивается раньшепреобразование всей входной строки

Таким образом, исправление может быть таким:

cmd.Parameters.Add(colName[i], DateTime.Parse(trueDateStr).ToString("dd-MMM-yy"));

И передача пустой строки для NULL - это нормально.Oracle обрабатывает пустые строки как NULL, а функция TO_DATE прекрасно обрабатывает значения NULL.

0 голосов
/ 28 декабря 2011

Ошибка может возникнуть из-за неправильного указания маски to_date, см. здесь . Вместо этого используйте следующее утверждение

to_date(ACTIVE_DATEin, 'DD-MON-YY HH24:MI:SS')
...