Hola!
Estoy teniendo problemas con una funcion que desarrolle en 9.1 pero que no me 
compila en 8.4. La necesito en 8.4 porque esta base de datos esta en un 
servidor en la nube y ahi es un poco dificil cambiar la base de datos porque yo 
lo pida, aunque lo quisiera.
La funcion en cuestion es esta
CREATE OR REPLACE FUNCTION public."_Test" (  out tipo varchar,  out fecha 
varchar,  x integer)RETURNS SETOF record AS$body$DECLARE  r record;BEGIN  case 
x      when 1 THEN     return query         select 'Linea1'::varchar as tipo, 
'00-00-00'::varchar as fecha         union all            select 
'Quijada'::varchar as tipo,to_char(now()::date,'YYYYMMDD') as fecha;            
 when 2 THEN            return query         select 'Linea1'::varchar as tipo, 
'00-00-00'::varchar as fecha         union all            select 
'Edwin'::varchar as tipo,to_char(now()::date,'YYYY/MM/DD') as fecha;            
 when 3 THEN            return query         select 'Linea1'::varchar as tipo, 
'00-00-00'::varchar as fecha         union all            select 
'Alberto'::varchar as tipo,to_char(now()::date,'YYYY-MM-DD') as fecha;          
    else        select 'Nada'::varchar as tipo;  end case;END;$body$LANGUAGE 
'plpgsql'VOLATILECALLED ON NULL INPUTSECURITY INVOKERCOST 100 ROWS 1000;

En 8.4 al compilarla consigo este error :ERROR:  syntax error at or near 
"$1"LINE 1:  select 'Linea1'::varchar as  $1 , '00-00-00'::varchar as  $...     
                                 ^QUERY:   select 'Linea1'::varchar as  $1 , 
'00-00-00'::varchar as  $2  union all select 'Quijada'::varchar as  $1 
,to_char(now()::date,'YYYYMMDD') as  $2 CONTEXT:  SQL statement in PL/PgSQL 
function "_Test" near line 9(5.453 sec)
Pero en 9.1Linea1 00-00-00Edwin  20121005
No creia que hubiese alguna diferencia,al menos en esto, entre estas dos 
versiones?
Alguien tiene alguna idea ??

                                          

Responder a