2013-06-23 4 views
1

Как я могу concat a fixed string текст dynamically generated в нижеследующем примере? Я сохранил это просто для этого примера, но реальная вещь много. Поэтому вместо того, чтобы иметь его повсюду, я хотел бы concat и отправить его на выход.MySql concat при использовании футляра внутри функции

BEGIN 
    DECLARE aId INT; 
    DECLARE aType INT; 
    DECLARE aParent INT; 
    DECLARE aUserName VARCHAR(32); 
    DECLARE aUserId INT; 
    DECLARE aCountry VARCHAR(2); 
    DECLARE aOutput VARCHAR(1500); 

    SELECT id, type, parent INTO aId, aType, aParent FROM products WHERE id = mElmId; 

    SET aOutput = CASE atype 
     WHEN 1 THEN 'Something' 
     WHEN 2 THEN 'Something' 
     WHEN 3 THEN 'Something' 
     WHEN 10 THEN 
      CASE mStatus 
       WHEN '14' THEN 'Place Order Link' 
       WHEN '01' THEN 'Cancel Order Link' 
       WHEN '11' THEN 'Order Cancelled - Place order link' 
       WHEN '00' THEN 'Order - Under Process'#No link here 
       WHEN '10' THEN 'Cancel - Under Process' #No link here 
       ELSE 'Detect Status Error' 
      END 
      //I need to concat 'Home ~ More' to the above text, but don't want to add it next to the text above. 
      //So it ends up like 'Place Order Link ~ Home ~More' 
     ELSE 'Error generating link' 
    END; 

    RETURN (aOutput); 
END 

ответ

2

Это то, что вы хотите?

SET aOutput = CASE atype 
    WHEN 1 THEN 'Something' 
    WHEN 2 THEN 'Something' 
    WHEN 3 THEN 'Something' 
    WHEN 10 THEN 
     concat(CASE mStatus 
        WHEN '14' THEN 'Place Order Link' 
        WHEN '01' THEN 'Cancel Order Link' 
        WHEN '11' THEN 'Order Cancelled - Place order link' 
        WHEN '00' THEN 'Order - Under Process'#No link here 
        WHEN '10' THEN 'Cancel - Under Process' #No link here 
        ELSE 'Detect Status Error' 
       END, ' Home ~ More') 
     //I need to concat 'Home ~ More' to the above text, but don't want to add it next to the text above. 
     //So it ends up like 'Place Order Link ~ Home ~More' 
    ELSE 'Error generating link' 

В фрагменте кода, mStatus не определен. Я предполагаю, что в исходном коде это позаботится.

+0

mStatus передается при вызове функции. – Norman

+0

Это именно то, что я надеялся сделать. Большое спасибо за помощь. – Norman