![](/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.