SQL除數為零出錯及出庫物料單價的處理

2021-05-23 22:13:33 字數 1639 閱讀 9914

--算出出庫成本單價,並寫入單價到出庫單對應的產品單價欄位上,並更新庫存餘額表。注意紅色部份

create           procedure  sp_outverifypost

@物料** [varchar](100),

@出庫輔助數量 [decimal](20,2) ,

@出庫數量 [decimal](20,2) ,

@期間 [char](10),

@出庫單編號 [varchar] (50),

@id int 

asdeclare @tempprice decimal(20,2) --用來儲存乙個單價值,方便更新到出庫單上的單價

if exists(select 物料** from  t_stockbalance where 物料**=@物料** and  期間=@期間)

begin

select @tempprice=(isnull(期初金額,0)+isnull(入庫金額,0))/(case when isnull(期初數量,0)+isnull(入庫數量,0)=0 then 1 else isnull(期初數量,0)+isnull(入庫數量,0) end) from t_stockbalance where (物料**=@物料** and 期間=@期間)

update  t_stockbalance set 出庫輔助數量=isnull(出庫輔助數量,0)+@出庫輔助數量,  出庫數量=isnull(出庫數量,0)+ @出庫數量,

出庫金額=((isnull(期初金額,0)+isnull(入庫金額,0))/(case when isnull(期初數量,0)+isnull(入庫數量,0)=0 then 1 else isnull(期初數量,0)+isnull(入庫數量,0) end))*@出庫數量

where (物料**=@物料** and 期間=@期間)

update t_stockoutentry set 單價=@tempprice

where 出庫單編號=@出庫單編號 and id=@id

end

else

begin

insert into t_stockbalance(期間,物料**)values(@期間,@物料**)

select @tempprice=(case when isnull(期初數量,0)+isnull(入庫數量,0)=0 then 1 else isnull(期初數量,0)+isnull(入庫數量,0) end) from t_stockbalance where (物料**=@物料** and 期間=@期間)

update  t_stockbalance set 出庫輔助數量=isnull(出庫輔助數量,0)+@出庫輔助數量,  出庫數量=isnull(出庫數量,0)+ @出庫數量,

出庫金額=((isnull(期初金額,0)+isnull(入庫金額,0))/(case when isnull(期初數量,0)+isnull(入庫數量,0)=0 then 1 else isnull(期初數量,0)+isnull(入庫數量,0) end))*@出庫數量

where (物料**=@物料** and 期間=@期間)

update t_stockoutentry set 單價=@tempprice

where 出庫單編號=@出庫單編號 and id=@id

endgo

SQL 遇到以零作除數錯誤的處理

這樣乙個情況 select from a where c 0 and b c 0.5 and b c 0.6 這樣一條語句,由於b,c是二個數值列,裡面記錄的是金額,而c 的話有可能為0,那麼這時我們雖然加上了c 0這個條件,卻仍有可能 出現 遇到以零作除數錯誤 這個錯誤.解決這個問題,有二種方法,...

sql 刪除資料

drop table student back 這樣就刪除表了,這樣的刪除不僅會刪除表中的資料,還包括表結構 字段 檢視 索引 觸發器和依賴的約束等等。此方法慎用!truncate table student back 這樣只是刪除表中的所有資料,會保留表結構 字段 約束 索引等等,但是不能加 wh...

用SQL刪除資料

使用 delete 命令可以 刪除資料,使用 truncate 命令可以刪除整表資料但保留結構。4.7.1 刪除記錄 在 命令編輯區 輸入 delete from scott.test where empno 7500 and empno 8000 然後單擊 執行 按鈕,出現如圖4.47所示的結果。...