Hola de nuevo. Supongo que la función la has creado en la base de datos destino, ¿no? Porque dblink le manda sólo el texto. Y entonces, mi duda es la misma: ¿para que necesitas la función? Dentro de dblink_exec, o bien otra función de la familia dblink, puedes usar directamente un insert, y ya no hay el problema.
Pero... si continúas deseando utilizar la función, revisa que la tengas creada en el host 192.168.192.199, dentro de la base de datos dncp-wf Si la tienes creada, pasamos a ver el error en la llamada: > PERFORM dblink_exec('conn_wf41','SELECT > sige_db.f_insert_tbl_expedientewf('||exp||',' > ||anio||','''||obs||''','||tipo::smallint||','||des::smallint||',' > ||med::smallint||','||mod||','||'now()':: timestamp without time > zone||','''||mail||''','||nen::smallint||',' ||ent::smallint||',' > ||uoc::smallint||',' ||suoc::smallint||',' ||uep::smallint||')' ); Fíjate en LA CADENA DE CARACTERES que construyes: no incluyes en esta cadena los cast, sino que haces un cast antes de concatenar (con lo que no sirve de nada). Es decir, fíjate en la diferencia entre estos dos ejemplos: postgres=# select 'texto '||3::smallint; ?column? ---------- texto 3 (1 row) postgres=# select 'texto ' || 3 || '::smallint'; ?column? ------------------- texto 3::smallint (1 row) En la creación de tu cadena, debes incluir los '::smallint' y similares entre comillas, para que se manden al host remoto como textos. Y para terminar, mi recomendación PERSONAL: NO uses la función y manda el insert directamente. He visto en varios sitios, y esta lista es uno de esos sitios, en donde se tiende a abusar del uso de las funciones, que no sirven de mucho salvo para liar. Saludos, y espero haber ayudado -- Miguel Rodríguez Penabad -- TIP 5: ¿Has leído nuestro extenso FAQ? http://www.postgresql.org/docs/faqs.FAQ.html