2017-08-14 72 views
1

我想在未激發更新查詢時在屏幕上顯示一個彈出窗口。 我正在使用Raiserror來引發和出錯,並顯示彈出窗口中顯示的自定義錯誤消息。如何擺脫定製的Raiserror的警告消息 - 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 

那麼它工作正常,但問題是,我得到連接到用戶自己定製的味精附加消息。

超出數量限制!數據插入/更新失敗。警告:空值 值被聚合或其他SET操作消除。

我想擺脫警告Null值的消除 ...等等等等 我應該怎麼做呢?

回答

2

試試這個:

SET ANSI_WARNINGS OFF 

這會壓制你所看到的警告。但是看起來它也可以通過在查詢中的某處添加NULL檢查來解決。我不能說完整的細節在哪裏,你的代碼還沒有發佈。

如果你選擇抑制警告速戰速決,只要確保你通過以下步驟重新啓用它之後在你的代碼:

SET ANSI_WARNINGS ON 
+0

其實我已經試過了。沒有幫助。你能向我解釋一下空值嗎?我編輯了我的代碼。它的實際更新查詢並沒有插入 – Wocugon

+0

現在我可以看到你的代碼,由於第1行的條件爲false,因此正在運行的代碼塊中出現了引發錯誤,因此這與您的更新語句無關。 – Rob212

+0

請參閱sqlauthority的警告提示:https://blog.sqlauthority.com/2015/02/13/sql-server-warning-null-value-is-eliminated-by-an-aggregate-or-另一組操作/ – Rob212