Italian community of Lazarus and Free Pascal

Presentazioni => Presentazioni nuovi utenti => Topic aperto da: DSchetti - Dicembre 01, 2019, 11:48:15 am

Titolo: Problemi con Delimiter mysql
Inserito 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
Titolo: Re:Problemi con Delimiter mysql
Inserito da: xinyiman - Dicembre 01, 2019, 12:38:16 pm
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
Titolo: Re:Problemi con Delimiter mysql
Inserito da: DSchetti - Dicembre 01, 2019, 01:04:36 pm
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!
Titolo: Re:Problemi con Delimiter mysql
Inserito da: xinyiman - Dicembre 01, 2019, 01:42:44 pm
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 ;
Titolo: Re:Problemi con Delimiter mysql
Inserito da: DSchetti - Dicembre 02, 2019, 04:44:25 pm
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.
Titolo: Re:Problemi con Delimiter mysql
Inserito da: DSchetti - Dicembre 02, 2019, 05:28:23 pm
Risolto, bisogna usare SET TERM  nello script.  Grazie!!!