我正在尝试在CASE中编写IF语句,但这给了我编译错误。我的代码看起来像
(CASE
IF (acc_type_id_ = 'ENDU') THEN
WHEN PRODUCT_ID != product_id_ AND AVAIL_TO_SELL = 'YES' AND Enable_Add_To_Cart(PRODUCT_ID)='YES' AND PROD_ITEM_PKG.Get_Allow_Endu_Purch(PRODUCT_ID)='YES' THEN '&ACTION_ADD_TO_CART'
WHEN PRODUCT_ID = product_id_ AND AVAIL_TO_SELL = 'YES' AND Enable_Add_To_Cart(PRODUCT_ID)='YES' AND SELL_ONLY_LINKED != 'YES' AND PROD_ITEM_PKG.Get_Allow_Endu_Purch(PRODUCT_ID)='YES' THEN '&ACTION_ADD_TO_CART'
ELSE
WHEN PRODUCT_ID != product_id_ AND AVAIL_TO_SELL = 'YES' AND Enable_Add_To_Cart(PRODUCT_ID)='YES' THEN '&ACTION_ADD_TO_CART'
WHEN PRODUCT_ID = product_id_ AND AVAIL_TO_SELL = 'YES' AND Enable_Add_To_Cart(PRODUCT_ID)='YES' AND SELL_ONLY_LINKED != 'YES' THEN '&ACTION_ADD_TO_CART'
END IF;
ELSE '&ACTION_NO_ACTION'
END) ACTION2,
SQLPLUS中的错误
( begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge
答案 0 :(得分:3)
这个怎么样?您可以使用acc_type_id_ = 'ENDU'
作为WHEN
条件的一部分来获得相同的结果。
(CASE
WHEN acc_type_id_ = 'ENDU' AND PRODUCT_ID != product_id_ AND AVAIL_TO_SELL = 'YES' AND Enable_Add_To_Cart(PRODUCT_ID)='YES' AND PROD_ITEM_PKG.Get_Allow_Endu_Purch(PRODUCT_ID)='YES' THEN '&ACTION_ADD_TO_CART'
WHEN acc_type_id_ = 'ENDU' AND PRODUCT_ID = product_id_ AND AVAIL_TO_SELL = 'YES' AND Enable_Add_To_Cart(PRODUCT_ID)='YES' AND SELL_ONLY_LINKED != 'YES' AND PROD_ITEM_PKG.Get_Allow_Endu_Purch(PRODUCT_ID)='YES' THEN '&ACTION_ADD_TO_CART'
WHEN acc_type_id_ != 'ENDU' AND PRODUCT_ID != product_id_ AND AVAIL_TO_SELL = 'YES' AND Enable_Add_To_Cart(PRODUCT_ID)='YES' THEN '&ACTION_ADD_TO_CART'
WHEN acc_type_id_ != 'ENDU' AND PRODUCT_ID = product_id_ AND AVAIL_TO_SELL = 'YES' AND Enable_Add_To_Cart(PRODUCT_ID)='YES' AND SELL_ONLY_LINKED != 'YES' THEN '&ACTION_ADD_TO_CART'
ELSE '&ACTION_NO_ACTION'
END) ACTION2,