Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

Re: Función


  • From: juan <juanramirez(at)cajazacate(dot)com(dot)sv>
  • To: Mario Soto Cordones <msotocl(at)gmail(dot)com>
  • Cc: "'Lista PostgreSQL'" <pgsql-es-ayuda(at)postgresql(dot)org>
  • Subject: Re: Función
  • Date: Tue, 30 Jun 2009 08:17:32 -0600
  • Message-id: <4A4A1E7C.70303@cajazacate.com.sv> <text/plain>

Mario Soto Cordones escribió:
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)
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')

Y me da el siguiente error:

ERROR:  function inspropiedades(unknown, integer, integer, integer, integer,
integer, integer, unknown, unknown, unknown, integer, integer, integer,
unknown, unknown, unknown, unknown, unknown) does not exist



El error te dice que no hay ninguna función que tenga los parámetros que estas pasando.... en otras palabras imaginate una funcion así:

CREATE OR REPLACE FUNCTION mi_funcion (numeric)
returns numeric as
return $1;
LANGUAGE 'pgsql';


* puede que me haya equivocado en la definición, pero SUPONIENDO que la función trabaja del todo bien.

para ejecutarla tendría que hacer esto: select mi_funcion(2), que retornaría un valor de 2. ahora que pasa si yo hago esto: select mi_funcion("hola mundo").... me va a dar el error que a ti te dio
ERROR:  function mi_funcion(unknown)  does not exists



ahora con tu caso:

>
> Y me da el siguiente error:
>
> ERROR: function inspropiedades(unknown, integer, integer, integer, integer,
> integer, integer, unknown, unknown, unknown, integer, integer, integer,
> unknown, unknown, unknown, unknown, unknown) does not exist



si te fijas en el primer parametro, postgres no entiende que tipo de valor es [unknown] porque, porque hay varios tipos de string, char, varchar, text, etc.... además de eso, en tu funcion utilizas en el tipo de parámetros , char y varchar, dándole un mismo trato


Julio Rodriguez ya te lo había dicho, que postgres es estricto con el tipo de datos y debes de hacer un cast explícito. Otra cosa que te dijo es que la función la estas ejecutando mal, puesto que como tu ya sabes no retorna ningún valor y la estas ejecutando "pensando" en que si retorna un valor select * from mi_funcion() <-- eso es como si la función retornará un valor, en cambio Julio Rodriguez te dijo como ejecutarla select mi_funcion().... capicci ?¿




muy aparte de todo esto, no se porque estas ocupando una función para un simple "insert".... esperaría que realmente no haga solamente eso, porque para mí no tiene sentido, pero para gustos son los colores :)



--
Cordialmente,
Juan Ramírez
El Salvador


  • References:

Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group