我被以下問題填充, 我已經在存儲過程中描述了varibale(DOUBLE),我需要從一個值中指定一個值(item price)表(項目)到這個聲明的變量。然而,我需要從內部使用案例的選擇查詢中獲得此值,項目價格可能在2列基於邏輯我必須找到正確的項目價格。請幫我解決這個問題,當我執行它給了我一個錯誤,Mysql使用Select case將單列值賦值給聲明的值
這裏怎麼是分層的,
DECLARE no_more_users INT DEFAULT 0;
DECLARE user_id INT DEFAULT 0;
DECLARE cart_id INT DEFAULT 0;
DECLARE cart_item_id INT DEFAULT 0;
DECLARE user_gift_id INT DEFAULT 0;
DECLARE itemPrice DOUBLE DEFAULT 0.0;
SELECT
CASE
WHEN sale_price=0 OR sale_price IS NULL THEN (price - (price * discount))
ELSE sale_price
END
INTO itemPrice
FROM item WHERE item_id = p_item_id ;
DECLARE checked_in_users CURSOR FOR
SELECT DISTINCT ul.user_id
FROM user_location ul
LEFT JOIN location_section ls ON ul.location_section_id = ls.location_section_id
INNER JOIN user u ON ul.user_id = u.user_id
INNER JOIN user_profile up ON u.user_id = up.user_id
INNER JOIN location_event le ON ul.location_event_id = le.location_event_id
WHERE ul.location_id = p_location_id AND ul.location_event_id = p_event_id
AND ul.checked_out_on IS NULL AND (ul.checked_in_on BETWEEN le.start_time AND le.end_time)
AND u.status = 1 ;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_users = 1;
OPEN checked_in_users;
FETCH checked_in_users INTO user_id;
read_loop: LOOP
更多的代碼...
請注意,SALE_PRICE,價格和折扣是項目表的庫存,邏輯是如果sale_price爲空或值爲0,那麼我應該從價格庫侖中獲得實際銷售價格。最後,我需要的是將之前聲明的varibale的核心項目價格。 任何幫助將高度appriciated。
謝謝,問題是我已經把這個銷售價格分配給delcared varivale。我沒有跟隨,但它沒有工作。 'SELECT CASE WHEN sale_price = 0 OR sale_price IS NULL THEN(price - (price * discount)) ELSE sale_price END INTO itemPrice FROM item WHERE item_id = p_item_id;'你能否在這方面給我提供正確的語法? – bluelabel 2013-04-07 13:48:21
你是什麼意思「沒有工作」? – Bohemian 2013-04-07 13:54:28
我試圖此,'SELECT CASE WHEN SALE_PRICE = 0 OR SALE_PRICE IS NULL THEN(價格 - (價格*折扣)) ELSE SALE_PRICE END INTO ITEMPRICE FROM項WHERE ITEM_ID = p_item_id; '這個statemnt在下一個語句中拋出一個錯誤,當我註釋掉它時,它會起作用。 – bluelabel 2013-04-07 14:05:21