में शुरू करने और समाप्त करने की आवश्यकता है, तो मैं कुछ समय पहले इसमें भाग गया था और सोच रहा था कि "शुरुआत" & "एंड" को सही मूल्यों के परिणामस्वरूप क्यों आवश्यकता है। अगर कथन एक सिंगलटन है और उसे "शुरुआती" & "एंड" की आवश्यकता नहीं है, जहां इसमें कई कथन की आवश्यकता होगी और यदि छोड़ा गया है तो प्रक्रिया को बनाने/बदलने की कोशिश करते समय निष्पादन त्रुटि उत्पन्न होगी।सिंगल अगर स्टेटमेंट को कोड ब्लॉक
एमएस एसक्यूएल में यह व्यवहार क्यों होता है इस बारे में कोई विचार ?????
धन्यवाद, क्रेग
- परिणाम सेट 2 वापसी सही मान।
एसक्यूएल।
Declare @Qty DECIMAL(10,2), @UOM VARCHAR(5), @CasePack Numeric(7,1), @CaseQty Numeric(11, 4), @im_weigh_item SmallInt, @rank_wi_ven_ctg Char(1), @po_qty_uom Char(1), @po_Qty float
Select
-- these 2 Params are Const in this process
@im_weigh_item =0, @rank_wi_ven_ctg = 'C',
-- Set Values
@UOM = 'C' , @po_Qty_uom = 'M', @po_Qty = 3, @casepack =6, @Qty = 2
/*
Check and Set vars. accordingly
This Conditional Block Generates no errors, but the results are incorrect
** NO "Begin" & End"
*/
If(@im_weigh_item=1)
If(@rank_wi_ven_ctg='U')
Select @UOM = 'U'
Else
If(@po_Qty_uom != 'C')
If(@[email protected])
Select @UOM = 'U', @Qty = @Qty * @po_Qty
-- Debug
Select @po_Qty_uom as po_Qty_uom, @UOM as UOM, @casepack as casepack, @po_Qty as po_Qty, @Qty as Qty
-- Debug
-- reset vars, test 2
Select @UOM = 'C' , @po_Qty_uom = 'M', @po_Qty = 3, @casepack =6, @Qty =2
/*
*** Works *** Calcs Correctly
Check and Set vars. accordingly
*** This Block uses the "Begin" & "End"
*/
If(@im_weigh_item=1)
begin
If(@rank_wi_ven_ctg='U')
Select @UOM = 'U'
end
Else
begin
If(@po_Qty_uom != 'C')
If(@[email protected])
Select @UOM = 'U', @Qty = @Qty * @po_Qty
end
-- Debug
Select @po_Qty_uom as po_Qty_uom, @UOM as UOM, @casepack as casepack, @po_Qty as po_Qty, @Qty as Qty
-- Debug