В хранимой процедуре значение поля, возвращенного из запроса выбора, не может быть распознано - PullRequest
0 голосов
/ 13 февраля 2020

Im mySQL У меня есть следующее stored procedure. Внутри sp у меня есть запрос select, а затем значение dt используется в if clause.

CREATE DEFINER=`cefcy`@`localhost` PROCEDURE `insert_checkup`(IN `p_id` INT(11), IN `u_id`INT(11),  IN `v_id` INT(11) )
    NO SQL
BEGIN
    SELECT max(id) as ver_id, max(dt) as dt FROM ps_versioning as ps_v where ps_v.patient_id= p_id and ps_v.user_id = u_id;
    IF (DATE(dt)=CURDATE()) THEN
        INSERT INTO `endorse_checkup` (`patient_id`, `checkup_date`, `status`, `version_id`) VALUES (p_id, CURRENT_TIMESTAMP() , 1, v_id );
    END IF;
    END

Однако, когда я пытаюсь вызвать его, я получаю сообщение: Error Code: 1054 Unknown column 'dt' in 'field list'

1 Ответ

1 голос
/ 13 февраля 2020

Если редактировать вашу процедуру «как есть», то

CREATE 
DEFINER=`cefcy`@`localhost` 
PROCEDURE `insert_checkup`(IN `p_id` INT(11), IN `u_id`INT(11),  IN `v_id` INT(11) )
NO SQL
BEGIN
    SELECT MAX(id), MAX(dt) INTO @ver_id, @dt 
    FROM ps_versioning as ps_v 
    WHERE ps_v.patient_id= p_id 
      AND ps_v.user_id = u_id;
    IF (DATE(@dt)=CURDATE()) THEN
        INSERT INTO `endorse_checkup` (`patient_id`, `checkup_date`, `status`, `version_id`) 
        VALUES (p_id, CURRENT_TIMESTAMP() , 1, v_id );
    END IF;
END

Но неясно, какова цель выбора MAX(id), который не будет использоваться позже ...

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