Italian community of Lazarus and Free Pascal
Presentazioni => Presentazioni nuovi utenti => Topic aperto da: DSchetti - Dicembre 01, 2019, 11:48:15 am
-
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
-
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
-
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!
-
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 ;
-
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.
-
Risolto, bisogna usare SET TERM nello script. Grazie!!!