sql用户定义函数未运行

kd3sttzy  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(323)

我有这样一种情况,我想为多个城市的不同产品生成发票id。我想得到根据不同的产品和城市生成的发票id。
我的table temp 看起来像

id  |order_id |product|city|invoice_id 
1   | 123     |  1    | 1  | FPU1
2   | 124     |  6    | 1  | PPU1

我想要下一个 invoice_id 对于产品1和城市1是fpu2。
产品1和城市2为fbn1,产品6和城市1为ppu2,依此类推。。。。
我创建了函数但没有运行。函数有什么问题吗?

CREATE function generate(p_id INT,  c_id INT) 
    returns VARCHAR(50) 

    BEGIN 
      -- DECLARE v_new_id VARCHAR(50); 
      SELECT Concat(( CASE 
                        WHEN t.product = 1 THEN "f" 
                        WHEN t.product = 6 THEN "p"    end ),
 c.city_name, Cast(RIGHT(t.invoice, Length(t.invoice) - 3)  AS  UNSIGNED) + 1
                   ) v_new_id 
      FROM   temp AS t 
             JOIN city c 
               ON c.city_id = t.city 
      WHERE  t.product = p_id 
             AND t.city = c_id; 

      RETURN( v_new_id ); 
    end;

获取语法错误:


# 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 15

第15行是,t.city=c\u id;

rlcwz9us

rlcwz9us1#

需要设置分隔符。
感谢@p.salmon提供宝贵的评论和链接
对于手动设置分隔符
对于phpmyadmin用户,请访问以下链接

相关问题