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: | 2009-06-30 14:17:32 |
Message-ID: | 4A4A1E7C.70303@cajazacate.com.sv |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Eduardo Morras | 2009-06-30 14:17:55 | Re: Función |
Previous Message | Espartano | 2009-06-30 14:16:54 | Re: ESPACIOS EN BLANCO EN UNA QUERY |