Пользовательская функция SQL не запущена - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть ситуация, когда я хочу создать invoice_id для разных продуктов для нескольких городов.Я хочу получить сгенерированный идентификатор счета в соответствии с другим продуктом и городом.

Моя таблица 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 - это AND t.city ​​= c_id;

1 Ответ

0 голосов
/ 19 ноября 2018

Необходимо установить разделители.

Спасибо @ P.Salmon за ценный комментарий и ссылка

Для установкиразделитель вручную следовать

Для phpmyadmin пользователь перейти по этой ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...