Как установить входной параметр в процедуре, в которой находится IN FUNCTION? - PullRequest
0 голосов
/ 07 августа 2020
CREATE PROCEDURE PRODUCT
(
  IN products varchar(64)
) 
BEGIN 
   SELECT COUNT(*) FROM t1 a
   WHERE a.list in products; 
END; 

CALL PRODUCT('A');

Цель и попытка

  • В процедуре PRODUCT это нормально, если параметр равен единице (CALL PRODUCT('A')). Но когда входное число несколько, например ('A','B','C','D'), решить не удалось.
  • Можно использовать индекс. Поле list является индексом.

1 Ответ

0 голосов
/ 07 августа 2020

Вы можете использовать функцию FIND_IN_SET.

WHERE FIND_IN_SET(a.list,products)>0;

Затем вызовите процедуру, как показано ниже.

call PRODUCT('A,B,C,D');

Если у вас есть индекс на a.list, вы можете попробовать следующее.

CREATE PROCEDURE PRODUCT
(
  IN products varchar(64)
) 
BEGIN 
  SET @sql = concat('SELECT COUNT(*) FROM t1 a WHERE a.list in(','''',REPLACE(products,',',''','''),'''',')');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;   
  DEALLOCATE PREPARE stmt; 
END; 

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