2

私は以下のようなことを達成しようとしていますが、ロジック、構文、その他すべてですべて間違っています。手伝ってくれませんか?

SET STATIC =特定の条件に基づいて試みています。もしこれがPHPだったら、私は を使っていたでしょうBreak。ここまで来ましたが、何もうまくいきません。これを行う方法がわかりますか?

CREATE DEFINER=`root`@`localhost` FUNCTION `caseTest`(`n` INT)
    RETURNS varchar(512)
    LANGUAGE SQL
    DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN

  DECLARE x VARCHAR(1500); 
  DECLARE y VARCHAR(1500); 
  DECLARE static VARCHAR(1500); 

  CASE n
        WHEN '14' THEN SET x = 'Place Order Link';
        WHEN '01' THEN SET x = 'Cancel Order Link';
        WHEN '11' THEN SET x = 'Order Cancelled - Place order link';
        SET static = concat(<a href="">,x,</a>);

        WHEN '00' THEN SET x = 'Order - Under Process'; #No link here
        WHEN '10' THEN SET x = 'Cancel - Under Process'; #No link here
        SET static = x;

        ELSE SET static = 'Error generating link';
    END;

 set y = 'Flag Link ~ Edit Link ~ Move Link';

  RETURN concat(x,y);
END
4

1 に答える 1

3

ステートメントのset外側に移動したい:case

  set x = case n 
        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
      end;
  set static = (case when n in ('14', '01', '11') then concat(<a href="">,x,</a>)
                     when n in ('00', '10') then x
                     ELSE 'Error generating link'
                end);

でこれを行うこともできますifsetwithはcase元のロジックに近いようです。

上記が機能しない理由はわかりません(構文エラーの可能性を除いて)。ifバージョンを試すことができます:

 if n = '14' THEN x = 'Place Order Link';
 elseif n = '01' THEN x = 'Cancel Order Link';
 elseif n = '11' THEN x = 'Order Cancelled - Place order link';
 elseif n = '00' THEN x = 'Order - Under Process'; #No link here
 elseif n = '10' THEN x = 'Cancel - Under Process'; #No link here

 if n in ('14', '01', '11') then static = concat(<a href="">,x,</a>);
 elseif n in ('00', '10') then static = x;
 ELSE static = 'Error generating link';
于 2013-06-23T16:14:19.947 に答える