Re: Diferencia entre 8.4 y 9.1 ??

From: Anthony <asotolongo(at)uci(dot)cu>
To: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Diferencia entre 8.4 y 9.1 ??
Date: 2012-10-07 20:32:18
Message-ID: 5071E6D2.1080601@uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 06/10/2012 11:43, Edwin Quijada escribió:
> 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'
> VOLATILE
> CALLED ON NULL INPUT
> SECURITY INVOKER
> COST 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.1
> Linea1 00-00-00
> Edwin 20121005
>
> No creia que hubiese alguna diferencia,al menos en esto, entre estas
> dos versiones?
>
> Alguien tiene alguna idea ??
>
>
>
>
> <http://www.uci.cu/>
Hola Edwin, lo único que he modificado es que le cambie en nombre a las
salidas tipo1 y fecha1, pues hay incompatibilidad con los parámetros y
las variables que usas dentro de las funciones que no se pueden llamar
iguales, ese error lo he tenido otras veces pero no como te da a ti, es
decir cuando tenia un parámetro con un nombre X no podía definir una
variable interna con ese nombre.
saludos

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 tipo1, '00-00-00'::varchar as fecha1
union all
select 'Quijada'::varchar as tipo1,to_char(now()::date,'YYYYMMDD')
as fecha1;

when 2 THEN
return query
select 'Linea1'::varchar as tipo1, '00-00-00'::varchar as fecha1
union all
select 'Edwin'::varchar as tipo1,to_char(now()::date,'YYYY/MM/DD')
as fecha1;

when 3 THEN
return query
select 'Linea1'::varchar as tipo1, '00-00-00'::varchar as fecha1
union all
select 'Alberto'::varchar as
tipo1,to_char(now()::date,'YYYY-MM-DD') as fecha1;

else
select 'Nada'::varchar as tipo1;
end case;
END;
$body$
LANGUAGE 'plpgsql'

10mo. ANIVERSARIO DE LA CREACION DE LA UNIVERSIDAD DE LAS CIENCIAS INFORMATICAS...
CONECTADOS AL FUTURO, CONECTADOS A LA REVOLUCION

http://www.uci.cu
http://www.facebook.com/universidad.uci
http://www.flickr.com/photos/universidad_uci

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hanlle Nicolás 2012-10-08 23:12:35 Retornar Tabla preprocesada en Procedimiento Almacenado, Cursores
Previous Message Edwin Quijada 2012-10-06 15:46:37 RE: Fwd: Problema al leer los Log desde Pgadmin III