2010-11-12 4 views
0

Je procédure stockée avec les lignes suivantes,Diviser par zéro erreur (procédure stockée)

DECLARE @DateRun as datetime                
Select @DateRun=LastRunDate from tblBatchRun where JobId = 1        
INSERT INTO tblRawTestScore                 
select * from vwOverallTestScores where TimeCompleted > @DateRun 

je suis maintenant une erreur comme celle ci-dessous,

Msg 8134, Niveau 16, État 1, procédure sp_CopyTestScoresRun, ligne 9 Diviser par erreur zéro rencontrée.

Lorsque je modifie les lignes de la procédure stockée ci-dessus comme,

INSERT INTO tblRawTestScore                 
select * from vwOverallTestScores where TimeCompleted > (Select LastRunDate from tblBatchRun where JobId = 1) 

ma procédure stockée exécute maintenant très bien.

Quelqu'un peut-il m'aider sur ce pls?

+0

Vous pouvez exécuter Profiler pour obtenir une trace de ce qui se passe exactement sur le scénario où vous obtenez diviser par zéro. – cairnz

Répondre

0

Me semble sélectionner lastrundate de tblbatchrun où jobid = 1 n'obtient aucune ligne. Dans le premier scénario, vous obtenez un résultat NULL dans votre variable, ce qui ne peut pas être comparé (cela posera également des problèmes), alors que dans votre deuxième version, le SP ne récupère aucun résultat de la variable. Sous-sélection, aucune comparaison n'est effectuée et aucune erreur n'est générée.

+0

Je reçois la valeur dans ma variable (valeur non NULL) .Et bien que l'erreur est levée. – Nanda

+0

Quelle est la définition de vwOverallTestScores? – cairnz

+0

Je ne pense pas qu'un résultat NULL aurait cet effet. Si @DateRun est nul, alors le "select ... où TimeCompleted> @DateRun" retournera juste pas de ligne, n'est-ce pas? –

0

Quelle valeur êtes-vous de cette déclaration:

Sélectionnez LastRunDate de tblBatchRun où JobId = 1

+0

DateHeure, par ex., 2010-11-08 08: 51: 20.017 – Nanda