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