Witam chcę wykonać poniższe zapytanie z poziomu PHP - najważniejsze jest użycie DELIMITER.
DROP TRIGGER IF EXISTS fvat_number;
DROP PROCEDURE IF EXISTS generuj_fvatno;
DELIMITER $$
CREATE PROCEDURE generuj_fvatno(out numerek VARCHAR(30))
BEGIN
SELECT
CONCAT(DATE_FORMAT(CURDATE(), '%Y'),'/',COUNT(fvat_no) + 1) INTO numerek
FROM t_faktury
WHERE
SUBSTRING_INDEX(fvat_no, '/', 1) = DATE_FORMAT(CURDATE(), '%Y')
LIMIT 1 ;
END$$
CREATE TRIGGER fvat_number BEFORE INSERT ON t_faktury
FOR EACH ROW BEGIN
CALL generuj_fvatno(@out);
IF @out = NULL THEN
SET NEW.fvat_no = CONCAT(DATE_FORMAT(CURDATE(), '%Y'),'/', 1);
ELSE
SET NEW.fvat_no = @out;
END IF;
END$$
Gdy użyję w taki sposób:
$tmp_sql = ...
$sth = $dbh->prepare($tmp_sql);
$sth->execute();
Dodstaje błąd
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$' at line 1 in /home/easyrentall/ftp/easyrentall/fpanel/install.php on line 93
Gdy chcę wykonać samo $tmp_sql = "DELIMITER $$"; również otrzymuje błąd.
O co chodzi ? :/