【发布时间】:2018-04-10 19:43:13
【问题描述】:
我正在 MySQL 中编写一个带有动态查询的存储过程,如下所示:
DROP PROCEDURE IF EXISTS test;
DELIMITER //
CREATE PROCEDURE test(
IN STATUS VARCHAR(20),
IN CREATED_ON1 VARCHAR(10)
)
BEGIN
SET @query="SELECT STATUS, COUNT(*) FROM CONTROL WHERE ID=ID";
IF STATUS IS NOT NULL THEN
SET @query=CONCAT(@query, " AND STATUS='",STATUS,"'");
END IF;
IF CREATED_ON1 IS NOT NULL THEN
SET @query=CONCAT(@query, " AND DATE_FORMAT(CREATED_ON,'%d-%m-%Y')>='",
CREATED_ON1, "'");
END IF;
SET @query=CONCAT(@query, " GROUP BY STATUS");
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
我打算用如下所示的签名重写这个过程。这将为比较日期提供正确的逻辑。
DROP PROCEDURE IF EXISTS test;
DELIMITER //
CREATE PROCEDURE test(
IN STATUS VARCHAR(20),
IN CREATED_ON1 DATE
)
主要问题是;如何将带有日期的谓词连接到@query?
【问题讨论】:
标签: java mysql stored-procedures jpa-2.1