Разделить на ноль ошибка в хранимой процедуре

Привет, я выполнил следующую хранимую процедуру в веб-приложении .net. Затем запустите приложение. я получил эту ошибку

"Делить на ноль ошибка"

Хранимая процедура:

CREATE procedure Details(@Stringtext varchar(8000),@SearchStringtext varchar(100))
as begin
SELECT ({fn LENGTH(@Stringtext)}-
{fn LENGTH({fn REPLACE(@Stringtext, @SearchStringtext, '')})})/
{ fn LENGTH(@SearchStringtext)}AS String_Count

end

person Community    schedule 02.01.2009    source источник


Ответы (6)


Очевидно:

{ fn LENGTH(@SearchStringtext)}

... оценивается до нуля.

person slim    schedule 02.01.2009

Длина SearchStringText равна нулю, поэтому возникает ошибка деления на ноль. Убедитесь, что при вызове функции строка имеет ненулевую длину. В качестве альтернативы проверьте длину, прежде чем делать выбор

person Dheer    schedule 02.01.2009

{ fn LENGTH(@SearchStringtext)}

оценивается в 0.

Однако почему это хранимая процедура? Вы не используете какую-либо функцию БД? Если это не упрощенная проблема, все это (длина, замена и т. д.) может быть выполнено в вашем приложении .net.

person Learning    schedule 02.01.2009

Если SearchStringtext пуст, его длина становится равной 0. Таким образом, хранимая процедура пытается делить на ноль (что является неопределенное действие).

Другими словами, следующая часть становится равной нулю:

{ fn LENGTH(@SearchStringtext)}

Возможно, вы захотите добавить некоторую логику (возможно, оператор if), чтобы предотвратить разделение, если SearchStringtext пуст.

person Spoike    schedule 02.01.2009

Единственная операция деления в этой процедуре имеет fn LENGTH(@SearchStringtext) в качестве делителя.

Следовательно, кажется, что длина **SearchStringtext** равна нулю. Возможно, вы пытаетесь найти пустую строку.

Пожалуйста, проверьте, а затем уточните детали вопроса вместе с платформой БД.

person M.N    schedule 02.01.2009

Кажется, что длина SearchStringtext равна 0, поэтому процедура пытается делить на ноль.

person gnud    schedule 02.01.2009