Разделить на ноль ошибок в хранимой процедуре - PullRequest
0 голосов
/ 02 января 2009

Привет, я выполнил следующую хранимую процедуру в веб-приложении .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

Ответы [ 6 ]

3 голосов
/ 02 января 2009

Очевидно:

{ fn LENGTH(@SearchStringtext)}

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

1 голос
/ 02 января 2009

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

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

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

1 голос
/ 02 января 2009
{ fn LENGTH(@SearchStringtext)}

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

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

1 голос
/ 02 января 2009

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

1 голос
/ 02 января 2009

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

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

{ fn LENGTH(@SearchStringtext)}

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

0 голосов
/ 02 января 2009

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

...