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
<[EMAIL PROTECTED]> 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
--
TIP 8: explain analyze es tu amigo

Responder a