Где пункт с между датами в динамическом c Запрос My SQL - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю динамическую c хранимую процедуру, которая будет содержать несколько параметров, таких как "p_From_Date" и "p_To_Date". Мне нужно сделать условие, если не NULL Concat для запроса в предложении, где между заданными датами и необходимо ограничить с размером страницы. Мой код как показано ниже:

    DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_get_logs_Test`(IN `p_Bot_Ids` VARCHAR(500), 
IN `p_From_Date` DATETIME, 
IN `p_To_Date` DATETIME, IN `page` INT(11), 
IN `pageSize` INT(11), OUT `TotalRows` INT(11))
    NO SQL
BEGIN

DECLARE x VARCHAR(100);

SELECT COUNT(*) INTO @count FROM bots; 
IF (page IS NULL) THEN
    set page = 0;
END IF;

IF (pageSize IS NULL OR pageSize = 0) THEN
    set pageSize = 10000000;
END IF;

set @query = concat('

SELECT l.id
         , b.bot_id
         , b.bot_name
         , l.log_level
         , l.log_type
         , l.time_stamp
         , l.finger_print
         , l.windows_identity
         , l.machine_name
         , l.process_name
         , l.process_version
         , l.job_Id
         , l.robot_name
         , l.machine_Id
         , l.file_name
         , l.message
         , l.created_date  
      FROM log l 
      join bots b 
         ON l.bot_id = b.bot_id 
     where b.bot_id in (',p_Bot_Ids,') 
     ORDER 
        BY b.bot_name ASC

');
prepare sql_query from @query;
execute sql_query;

        SET TotalRows = @count;
END$$
DELIMITER ;
...