2017-08-14 1 views
1

Je veux afficher une fenêtre contextuelle à l'écran lorsqu'une requête de mise à jour n'est pas déclenchée. J'utilise Raiserror pour augmenter et erreur et afficher un message d'erreur personnalisé qui est affiché dans le popup.Comment se débarrasser du message d'avertissement de Raiserror personnalisé - SQL Server

if(some condition) 
begin 

update Tab1vendorInside 
set 
VendorBatchCode=a.VendorBatchCode, 
Quantity=a.Quantity,--case When (PlannedDispatchQty>=a.Quantity) then a.Quantity Else 0 end, 
OfferedForInspectionOn=convert(varchar(80),convert(date, getdate())), 
[Time]=convert(varchar(8), convert(time, getdate())) , 
CTDTDSReference=a.CTDTDSReference, 
Certificateupload=a.Certificateupload, 
Active=a.Active 
from @TP a 
inner join Tab1vendorInside 
on a.ID=Tab1vendorInside.ID and 
a.Material=Tab1vendorInside.Material 
and Datepart(mm,a.PlannedDispatchQtyDate)=Datepart(mm,Tab1vendorInside.PlannedDispatchQtyDate) 
and Datepart(year,a.PlannedDispatchQtyDate)=Datepart(year,Tab1vendorInside.PlannedDispatchQtyDate) 
inner join Tab1Vendor 
on Tab1Vendor.Material=a.Material and Tab1Vendor.ID=a.TaboneVendorID 
and Datepart(mm,a.PlannedDispatchQtyDate)=Datepart(mm,Tab1Vendor.PlannedDateofDispatch) 
and Datepart(year,a.PlannedDispatchQtyDate)=Datepart(year,Tab1Vendor.PlannedDateofDispatch) 
end 

else 
begin 
--if it enters else, logically it means that the data is updated. 
begin try 
select 16/0 
end try 
begin catch 
RAISERROR('Quantity limit exceeded! Data insert/update failed.',16,1); 
end catch 
end 

Bien que cela fonctionne très bien, mais le problème est, je reçois un message supplémentaire attaché à mon msg personnalisé.

Quantité limite dépassée! L'insertion/mise à jour des données a échoué. Avertissement: La valeur nulle est éliminée par un agrégat ou une autre opération SET.

Je veux me débarrasser de la Avertissement valeur NULL est éliminé ... etc etc comment dois-je faire?

Répondre

2

Essayez ceci:

SET ANSI_WARNINGS OFF 

Cela supprime l'avertissement que vous voyez. Cependant, il semble qu'il pourrait également être corrigé en ajoutant une vérification NULL quelque part dans votre requête. Je ne peux pas dire où les détails complets sont votre code n'ont pas été postés.

Si vous choisissez la solution rapide de supprimer l'avertissement assurez-vous de l'activer à nouveau par la suite dans votre code en procédant comme suit:

SET ANSI_WARNINGS ON 
+0

En fait, je l'ai déjà essayé. n'a pas aidé. Pouvez-vous m'expliquer sur la valeur nulle? J'ai modifié mon code. Sa requête de mise à jour et ne pas insérer – Wocugon

+0

Maintenant, je peux voir votre code, l'erreur augmenter se passe dans un bloc de code qui est exécuté parce que la condition sur la ligne 1 est fausse, donc ce n'est pas quelque chose à faire avec votre déclaration de mise à jour. – Rob212

+0

Voir une bonne explication de l'avertissement courtoisie de sqlauthority: https://blog.sqlauthority.com/2015/02/13/sql-server-warning-null-value-is-eliminated-by-an-agrgregate-or- autre-ensemble-opération / – Rob212