Re: Re[2]: Ejecutar una función que crea una vista con dblink

From: "Jose Luis Balle" <joseluisballe(at)gmail(dot)com>
To:
Cc: "Laura Martinelli" <lmartinelli(at)mail(dot)unlu(dot)edu(dot)ar>, "Laura Martinelli" <lmartinelli(at)unlu(dot)edu(dot)ar>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Re[2]: Ejecutar una función que crea una vista con dblink
Date: 2008-07-11 16:16:29
Message-ID: 6d87542d0807110916w1fe13af5r1340d3f0fa4d4cde@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Fijate que hay dos SELECTS, el de la coneccion y el de la desconeccion.

CREATE OR REPLACE FUNCTION dblink_db1_db2() RETURNS int4 AS $$
BEGIN
PERFORM dblink_connect('dbname=academicos user=postgres password=turnos');
CREATE OR REPLACE VIEW public.prueba AS
SELECT alumnos.dni
FROM dblink('SELECT dni FROM alumnos'::text) alumnos(dni numeric(10,0));
PERFORM dblink_disconnect();
RETURN 1;
END;
$$ LANGUAGE plpgsql;

El día 11 de julio de 2008 11:54, Alvaro Herrera
<alvherre(at)commandprompt(dot)com> escribió:
> Laura Martinelli escribió:
>>
>>
>> Con fecha Viernes, 11 de Julio de 2008, 11:34:12 a.m., escribió:
>>
>> AH> Laura Martinelli escribió:
>>
>> >> pero cuando la quiero ejecutar
>> >>
>> >> SELECT dblink_db1_db2();
>> >>
>> >> me da el siguiente error:
>> >>
>> >> Eror: select query has no destination for result data
>> >> Hint: if you want to discard the results, use PERFORM instead.
>> >> Context:Pl/pgSQl function "dblink_db1_db2" line 2 at SQL statement
>> >>
>> >> si pruebo con PERFORM dblink_db1_db2();
>>
>> AH> Tienes que cambiar a PERFORM el dblink_connect().
>>
>> Alvaro vos decís que dentro de la función escriba:
>>
>> PERFORM dblink_connect('dbname=academicos user=postgres password=turnos');
>
> Si.
>
>> lo hice y despues llamo a la función con select y con perform y me
>> sigue dando los mismos errores que antes para ambos casos.
>
> PERFORM es una orden PL/pgSQL, no SQL. La diferencia es que el primero
> se usa dentro de las funciones en ese lenguaje, mientras que el segundo
> se usa externamente (por ejemplo cuando invocas una funcion en psql).
> Es importante estar consciente de la diferencia. Por ejemplo no tiene
> sentido intentar usar PERFORM para invocar tu nueva funcion.
>
> Te sugiero que hagas el cambio dentro de la funcion, luego invoques la
> funcion con SELECT, y muestres el nuevo mensaje de error (necesariamente
> debe ser distinto del error original).
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
> --
> TIP 4: No hagas 'kill -9' a postmaster
>

--
Informático:
Persona falta de recursos que, partiendo de premisas falsas y de
especificaciones inconsistentes e incompletas, dirigido por
incompetentes y utilizando herramientas que no funcionan es capaz de
iniciar un proyecto de dudoso éxito realizando una obra de arte que
,por supuesto, es cara y no tiene otro fin que dar prestigio a la
empresa que ha contratado sus servicios.
http://islamanzana.es/desarrollo-de-software/definicion-de-informatico

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Laura Martinelli 2008-07-11 16:22:00 Re[2]: [pgsql-es-ayuda] Re[2]: Ejecutar una función que crea una vista con dblink
Previous Message Lorenzo Villarreal 2008-07-11 15:49:46 QuarkXPress