MySQL error 1336, prepared statement nélkül?
Van egy egyszerű tárolt eljárásom, ami bizonyos feltételeknek megfelelően ír egy adattáblába rekordokat. A beszúrandó sor értékei egy részét az eljáráson belül állítom elő úgy, hogy lekérdezem egy másik táblából.
Az első INSERT híváskor azonban a következő hibaüzenetet kapom: ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger
Tudomásom szerint ez a hibaüzenet csak prepared statement-ek hívásakor (belefutottam 1x-2x) fordulhat elő, na de jelen esetben ilyesmiről szó nincs.
Lehet hogy én vagyok ismételten vak, vagy tudatlan, de már 1 napja nem jövök rá, mi okozhatja a problémát, pedig tényleg próbáltam utána járni.
Ha valakinek van erre ötlete, nagyon megköszönném!
UPDATE:
Ubuntu server 12.04, MySQL 5.5.32 környezeten lefut rendesen,
szóval lehetséges, hogy konfigurációs hiba lesz... :/
Környezet:
* Win 8 x64
* mysql 5.6.12
A kód:
■ Az első INSERT híváskor azonban a következő hibaüzenetet kapom: ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger
Tudomásom szerint ez a hibaüzenet csak prepared statement-ek hívásakor (belefutottam 1x-2x) fordulhat elő, na de jelen esetben ilyesmiről szó nincs.
Lehet hogy én vagyok ismételten vak, vagy tudatlan, de már 1 napja nem jövök rá, mi okozhatja a problémát, pedig tényleg próbáltam utána járni.
Ha valakinek van erre ötlete, nagyon megköszönném!
UPDATE:
Ubuntu server 12.04, MySQL 5.5.32 környezeten lefut rendesen,
szóval lehetséges, hogy konfigurációs hiba lesz... :/
Környezet:
* Win 8 x64
* mysql 5.6.12
A kód:
CREATE DEFINER=`root`@`localhost` PROCEDURE `INSERT_POINT_HISTORY`(
IN e_code VARCHAR(4), IN e_match_id INT, IN e_person_id INT
)
BEGIN
DECLARE v_px VARCHAR(3) DEFAULT NULL;
DECLARE v_pv DECIMAL(6,2) DEFAULT 0.0;
DECLARE v_epv DECIMAL(6,2) DEFAULT 0.0;
IF (SELECT COUNT(*) FROM tbl_point WHERE code LIKE e_code) > 0 THEN
SELECT position_x INTO v_px
FROM tbl_pitch_position
WHERE match_id = e_match_id AND person_id = e_person_id;
SELECT `value` INTO v_pv
FROM tbl_point
WHERE `code` LIKE e_code;
IF v_pv <> 0.00 THEN
-- Eddig fut le a kód...
INSERT INTO
tbl_point_history (
`match_id`,`person_id`,`point_code`,`position_x`,`time`,`value`
) VALUES (
e_match_id,e_person_id,e_code,"",NOW(),v_pv
);
END IF;
IF v_px IS NOT NULL THEN
SELECT DISTINCT `value` INTO v_epv
FROM tbl_extra_point
WHERE `point_code` LIKE e_code AND `position_x` LIKE v_px;
IF v_epv <> 0.00 THEN
INSERT INTO
tbl_point_history (
`match_id`,`person_id`,`point_code`,`position_x`,`time`,`value`
) VALUES (
e_match_id,e_person_id,e_code,v_px,NOW(),v_epv
);
END IF;
END IF;
END IF;
END