2009-01-02 6 views
0

Bonjour, j'ai exécuté la procédure stockée suivante dans l'application Web .net. Ensuite, lancez l'application. Je suis arrivé cette erreurErreur de division par zéro dans la procédure stockée

"division par zéro erreur"

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 
+0

Veuillez spécifier la plate-forme DB – AnthonyWJones

Répondre

3

De toute évidence:

{ fn LENGTH(@SearchStringtext)} 

... évalue à zéro.

0

Il semble que la longueur de SearchStringtext soit 0 - donc la procédure essaie de diviser par zéro.

1

Si SearchStringtext est vide, sa longueur devient 0. Ainsi, la procédure stockée essaie de diviser par zéro (undefined thing to do).

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

{ fn LENGTH(@SearchStringtext)} 

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

1

La longueur du SearchStringText est zéro et il y a donc une erreur de division par zéro. Assurez-vous que lorsque la fonction est appelée, la chaîne a une longueur différente de zéro. vérifier alternative pour la longueur avant de faire la sélection

1
{ fn LENGTH(@SearchStringtext)} 

évalue à 0.

Cependant, pourquoi est-ce une procédure stockée? Vous n'utilisez aucune fonctionnalité db? À moins que cela est un problème simplifié, tout cela (longueur, remplacer, etc.) pourrait être fait dans votre application .net

1

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

Par conséquent, il semble que la longueur de **SearchStringtext** évalue à zéro. Il se peut que vous essayiez de rechercher une chaîne vide.

Veuillez vérifier, puis élaborer les détails de la question, ainsi que la plateforme DB.

Questions connexes