Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Errore "Dynamic SQL is not allowed in stored function or trigger"

79 views
Skip to first unread message

Lord Max

unread,
Dec 14, 2011, 8:22:41 AM12/14/11
to
Ciao a tutti

Sono nuovo di mysql... ho sempre lavorato con Oracle
Devo fare un trigger o una stored procedure che mi permetta di scrivere un file all'inserimento di un nuovo record su una tabella.
Solo che ogni volta mi esce l'errore "Dynamic SQL is not allowed in stored function or trigger"

Tralasciando che non ho una stored function ma una stored procedure immagino il problema sia il trigger.

Vi copio una parte del codice:


-------------------------------
DROP PROCEDURE IF EXISTS write_on_insert_on_jos_vm_product;
DELIMITER //
CREATE PROCEDURE write_on_insert_on_jos_vm_product(IN prod_sku varchar(64))
BEGIN
SET @myCommand := concat("SELECT * INTO OUTFILE 'c:\\file-", DATE_FORMAT(now(),'%Y%m%d-%H%i%s'), ".sql'",
" FIELDS TERMINATED BY ','",
" ENCLOSED BY '§'",
" LINES TERMINATED BY '\n'",
" FROM jos_vm_product p ",
" where p.product_sku = ", prod_sku);
PREPARE stmt FROM @myCommand;
EXECUTE stmt;
END;//
DELIMITER ;

DROP TRIGGER IF EXISTS insert_on_jos_vm_product;
DELIMITER //
CREATE TRIGGER insert_on_jos_vm_product
AFTER INSERT
ON jos_vm_product
FOR EACH ROW
BEGIN
call write_on_insert_on_jos_vm_product(new.product_sku);
END;//
DELIMITER ;
--------------------------

Ho creato la stored procedure perché mi continuava a dare errore con il trigger.
Se eseguo la "query" con il CONCAT funziona senza problemi.

Avete qualche idea su come scrivere un file dandogli un nome univoco?
Grazie infinite

marcom...@gmail.com

unread,
May 27, 2014, 10:27:12 PM5/27/14
to
Bel macello, non puoi fare l'esecuzione di una query da stringa utilizzando PREPARE ed EXECUTE nelle funzioni, procedure e nei trigger. Puoi solo fare query statiche definite a priori, e magari con la condizione dinamica.
0 new messages