El 29 de junio de 2009 19:40, Mario Soto Cordones<msot...@gmail.com> escribió: > > > Hola Lista, tengo la siguiente función: > > > > CREATE OR REPLACE FUNCTION "public"."inspropiedades" (char, smallint, > smallint, integer, smallint, smallint, smallint, varchar, varchar, varchar, > smallint, smallint, smallint, varchar, varchar, varchar, varchar, varchar) > RETURNS "pg_catalog"."void" AS > > $body$ > > INSERT INTO epropiedades_propiedades( id_estado, co_empresa, co_filial, > co_propiedad, co_tipo, co_estado, ty_operacion, nb_propiedad, tx_direccion, > tx_calle, co_comuna, > > co_region, co_provincia,rut_propietario, rut_corredor, tx_numero, > tx_referencia, id_usuario) > > VALUES ($1, $2, $3, $4, $5,$6, $7, $8, $9, $10,$11,$12,$13, $14, > $15,$16,$17,$18); > > $body$ > > LANGUAGE 'sql' > > VOLATILE > > RETURNS NULL ON NULL INPUT > > SECURITY INVOKER > > COST 100; > > > > La ejecuto de la siguiente forma: > > > > select * from inspropiedades('SA', 1, 1, 109, 1, 1, 3, 'CASA QUINTA CARMEN', > 'DIRECCION', 'CALLE CARMEN', 30, 13, > 1,'1-6','1-6','123456','REFERENCIA','MSOTO') >
PostgreSql es algo estricto con los tipos de datos, haz un cast explícito a tus parámetros de la función, y otra cosa, la forma en que se esta llamando la función no es correcta, ya que el tipo de retorno de la función es void, no un conjunto de registros. De tal forma que para llamarla quedaría así: select inspropiedades( ... ); -- TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net