![](/img/trans.png)
[英]How to identify a particular select statement in multiquery mysqli and php
[英]How to execute custom delimiter query with mysqli multiquery
我有以下sql脚本,我想通过多查询执行它
DELIMITER $$
DROP FUNCTION IF EXISTS `getAttendanceHistoryDates`$$
CREATE FUNCTION getAttendanceHistoryDates(processDate date)
RETURNS TEXT
DETERMINISTIC
LANGUAGE SQL
BEGIN
DECLARE minDate date;
DECLARE startYear int;
DECLARE endYear int;
DECLARE dateString TEXT;
SET minDate = (SELECT MIN(date) FROM `ohrm_attendance_report`);
SET startYear = YEAR(minDate);
SET endYear = YEAR(processDate);
SET dateString = processDate;
WHILE startYear < endYear DO
SET dateString = CONCAT(dateString,'|',CONCAT(startYear, '-12-31'));
SET startYear = startYear + 1;
END WHILE;
RETURN dateString;
END;
$$
DELIMITER ;
有没有办法做到这一点? 如果我只删除DELIMITER $$
和DELIMITER ;
它将起作用DELIMITER ;
从脚本中替换$$
为;
并执行多查询?
不,不可能通过MySQL API。 分号分隔符不可配置。 这是在MySQL服务器端确定的。 有关更多详细信息,请参见http://dev.mysql.com/doc/refman/5.6/en/c-api-multiple-queries.html
mysql
命令行界面通过预定义输入和使用分隔符分隔语句来支持DELIMITER
。 然后,它分别执行每个语句。
没有理由您需要使用多查询。 您应该将DROP FUNCTION
和CREATE FUNCTION
作为单独的查询运行。
通常,使用多重查询是一个坏主意,因为它为不良的SQL注入问题创造了机会。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.