El 31/5/19 a las 08:10, José Vicente Zahonero García escribió: > Hola, tengo esta función: > CREATE OR REPLACE FUNCTION inserciones(trayecto varchar, tempo varchar, > espacio numeric) > returns void AS $$ > > declare > > spaces integer; > hora integer; > minuto integer; > segundo integer; > resultado real; > tiempo_en_minutos real; > calorias real; > > > begin > > spaces := espacio*1000;
spaces es entero, y espacio numerico. Aunque multipliques por 1000, tener que hacer un cast a entero. > hora := cast(substring(tempo from 1 for 2)); > minuto := cast(substring(tempo from 4 for 2)); > segundo := cast(substring(tempo from 7 for 2)); Estas usando mal la funcion cast. Imagino que la idea es hacer un cast a entero. https://www.postgresql.org/docs/current/sql-createcast.html > hora := hora*3600; > minuto := minuto*60> resultado := > ((spaces/(hora+minuto+segundo))*3.6); > tiempo_en_minutos := ((hora+minuto+segundo)/60); > calorias := (70*0.21)*tiempo_en_minutos; > > insert into datos (recorrido,tiempo,distancia,calorias,kmh,fecha) values > (trayecto,tempo,spaces,calorias,resultado,current_date); > > end; > $$ language 'plpgsql'; > Al ejecutarla me da el error: > Unterminated dollar quote started at position 0 in SQL $$ language > 'plpgsql';. Expected terminating $$ Habrás pegado mal la funcion porque a mi no me da ese error. Si me da error en los cast() de arriba en los que no estas especificando el tipo al que debe convertirse el valor. -- Martín Marqués http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services