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