DSchetti:
Buongiorno a tutti, ho scritto una funzione mysql che è riconosciuta sintatticamente corretta con MySQL Query Browser e funziona correttamente in varie select. Quando però tento con lazarus di definirla sul DB mysql con una TSQLquery ottengo un errore sul comando DELIMITER // questa è la funzione: drop function if exists myfun; delimiter // create function myfun( par1 double, par2 double) returns decimal(13, 5) deterministic begin -- corpo della funzione end// Dopo varie ricerche non sono riuscito a risolvere il problema, chiedo gentilmente una mano. Saluti
xinyiman:
Ciao tsqlquery mi sembra di ricordare che esegue una query per volta. Prima esegui drop function if exists myfun;
Poi esegui create function myfun( par1 double, par2 double) returns decimal(13, 5) deterministic begin -- corpo della funzione end
Oppure usi TSQLScript
DSchetti:
hai ragione, nella fretta ho incollato TSQLQuery ma intendevo TSQLScript, il risultato non cambia, ti ringrazio per la risposta, ho l'impressione che non riconosce delimiter!
xinyiman:
Con il TSQLScript dovrebbe bastare
drop function if exists myfun; create function myfun( par1 double, par2 double) returns decimal(13, 5) deterministic begin -- corpo della funzione end;
Perchè se non ricordo male non gestisce i delimitatori. Ma separa le query sulla base del carattere "Terminator" ovvero ;
DSchetti:
Purtroppo non funziona da un errore al primo terminatore che incontra dentro il corpo della funzione, probabilmente perché lo interpreta come un comando da eseguire, invece è una istruzione della funzione che si sta definendo e che deve essere caricata sul DB. Grazie.