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


Reply via email to