0 votes

Erreur de division par zéro dans une procédure stockée

Bonjour, j'ai exécuté la procédure stockée suivante dans une application web .net. Puis j'ai exécuté l'application. J'ai obtenu cette erreur

" Erreur de division par zéro "

Procédure stockée :

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

3voto

slim Points 12620

De toute évidence :

{ fn LENGTH(@SearchStringtext)}

... est évaluée à zéro.

1voto

Spoike Points 32082

Si SearchStringtext est vide, sa longueur devient 0. Ainsi, la procédure stockée tente de diviser par zéro (ce qui est une erreur de calcul). une chose indéfinie à faire ).

En d'autres termes, la partie suivante devient nulle :

{ fn LENGTH(@SearchStringtext)}

Vous pourriez ajouter une certaine logique (une instruction if peut-être) pour empêcher la division de se produire si le SearchStringtext est vide.

1voto

Dheer Points 1684

La longueur du SearchStringText est nulle et il y a donc une erreur de division par zéro. Assurez-vous que lorsque la fonction est appelée, la chaîne de caractères est d'une longueur non nulle. Vous pouvez également vérifier la longueur avant d'effectuer la sélection

1voto

Learning Points 5386
{ fn LENGTH(@SearchStringtext)}

est évalué à 0.

Cependant, pourquoi s'agit-il d'une procédure stockée ? Vous n'utilisez aucune fonctionnalité de la base de données ? À moins qu'il ne s'agisse d'un problème simplifié, tout cela (longueur, remplacement, etc.) pourrait être fait dans votre application .net.

1voto

M.N Points 4106

La seule opération de division dans cette procédure, a fn LENGTH(@SearchStringtext) comme diviseur.

Il semble donc que la longueur de **SearchStringtext** est évaluée à zéro. Il est possible que vous essayiez de rechercher une chaîne vide.

Veuillez vérifier et ensuite élaborer les détails de la question, ainsi que la plateforme de la BD.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X