ugrás a tartalomhoz

MySQL error 1336, prepared statement nélkül?

eBandee · 2013. Aug. 24. (Szo), 10.25
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:

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