簡體   English   中英

如何使用mysqli multiquery執行自定義定界符查詢

[英]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 FUNCTIONCREATE FUNCTION作為單獨的查詢運行。

通常,使用多重查詢是一個壞主意,因為它為不良的SQL注入問題創造了機會。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM