Функция внутри хранимой процедуры возвращает NULL mysql

0

Я создаю эти 2 функции, которые отлично работают:

DROP FUNCTION IF EXISTS get_participantes;
CREATE FUNCTION get_participantes () 
    RETURNS varchar(255)
    DETERMINISTIC
    BEGIN 
        DECLARE par varchar(255);
        DECLARE id_solo INT;
        SET id_solo = (SELECT max(id) FROM meetings);
        SET @id_solo = id_solo; 
        SET group_concat_max_len = 2048;
        SET par = (SELECT GROUP_CONCAT(mail SEPARATOR ',') FROM users WHERE id IN ( SELECT user_id FROM meeting_participants WHERE meeting_id = @id_solo));
       RETURN par;
    END


DROP FUNCTION IF EXISTS get_agenda;
CREATE FUNCTION get_agenda() 
    RETURNS TEXT
    DETERMINISTIC
    BEGIN 
        DECLARE age TEXT;
        DECLARE id_solo2 INT;
        SET id_solo2 = (SELECT max(id) FROM meetings);
        SET @id_solo2 = id_solo2;
        SET group_concat_max_len = 2048;
        SET age =  (SELECT GROUP_CONCAT(text SEPARATOR '\n') from meeting_contents WHERE meeting_id = @id_solo2);
      RETURN age;
    END

Я пытаюсь вызвать эти функции в следующей процедуре:

DROP PROCEDURE IF EXISTS google_calendar;
CREATE PROCEDURE google_calendar
(idConcat varchar(50),
 pTitulo varchar(50),
 pLugar varchar(50),
 pInicio varchar(50),
 pDuracion varchar(50),
 pDelete varchar(50))
BEGIN
  SELECT get_participantes() INTO @participante_comma;
  SELECT get_agenda() INTO @agenda_texto;
  SELECT IF(@participante_comma IS NULL, 'empty', @participante_comma) INTO @par_final;
  SELECT IF(@agenda_texto IS NULL, 'empty', @agenda_texto) INTO @agenda_final;
  SET @cmd = CONCAT('curl "http://***.**.**:8**/meetings/api/" --data-urlencode "id=',idConcat,'" --data-urlencode "participants=',@par_final,'" --data-urlencode "agenda=',@agenda_final,'" --data-urlencode "title=',pTitulo,'" --data-urlencode "lugar=',pLugar,'" --data-urlencode "inicio=',pInicio,'" --data-urlencode "duracion=',pDuracion,'" --data-urlencode "delete=',pDelete,'"'); 
  SET @result = sys_eval(@cmd);
END

Но по какой-то причине, когда я выполняю функции, вызывая процедуру сначала, переменные @participante_comma и @agenda_texto возвращают null каждый раз. Но если я выполняю функции, используя SELECT из консоли MySql, он возвращает именно то, что я хочу.

> SELECT get_participantes();$
+---------------------------------------------+
| get_participantes()                         |
+---------------------------------------------+
| [email protected],[email protected] |
+---------------------------------------------+

Я не понимаю, почему не работает внутри хранимой процедуры. Пожалуйста помоги.

Теги:
stored-procedures
null
stored-functions

1 ответ

0

Не берите в голову. Я просто понимаю проблему: триггер не асинхронный, и после того, как я вставляю что-то в собрания, есть вкладка в meeting_participants. Но когда я выполняю свои функции, в meeting_participants пока нет вставки. Я меняю триггер после встреч "ПОСЛЕ ВСТАВКИ" и "ПОСЛЕ ВСТАВКИ" на совещании_частников, и это все.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню