Jaime
Eso ya lo probe, y no anduvo. Ya lo resolvi, tengo dos databases, A y B. Arme una tabla en la base B con los campos que necesito. a esa tabla le puse un trigger, en ese trigger armo con el registro que me envia el insert en la tabla A ,la llamada a la func update_or_insert_nacionalidades(...) Desde la base A por medio de dblink inserto un registro en la tabla armada en la base B y funciona bien. llege a la conclusion que el dblink no anda con funciones. salu2 jmdc 2012/11/16 Jaime Casanova <[email protected]> > 2012/11/15 Juan <[email protected]>: > > > > sql = 'perform update_or_insert_nacionalidades( ' ; > > sql = sql || quote_literal( v_cod2 ) || ' ::text ,' ; > > sql = sql || quote_literal(v_nombre ) || ' ::text );' ; > > > > La verdad es que me estoy matando de la risa... es como ver a un > cachorrito perseguirse la cola! ;) > > Te dije ya que perform solo funciona dentro de codigo plpgsql, y > dblink esta estableciendo una conexion independiente a la base por lo > que el perform no se esta ejecutando en el contexto de una funcion > plpgsql. > > en el otro ejemplo agregaste un "into p" pero como la funcion esta > definida como que devuelve void no puedes crear una tabla basandote en > su resultado (lo de crear una tabla es porque fuera del contexto de > una funcion plpgsql SELECT ... INTO crea una tabla temporal, > http://www.postgresql.org/docs/9.2/static/sql-selectinto.html) > > prueba asi: > > select dblink_exec( ' select update_or_insert_nacionalidades( ''22'' > ::text ,''Colombiana'' ::text );') ; > > -- > Jaime Casanova www.2ndQuadrant.com > Professional PostgreSQL: Soporte 24x7 y capacitación > Phone: +593 4 5107566 Cell: +593 987171157 >
