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: 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

In response to

  • Función at 2009-06-30 00:40:40 from Mario Soto Cordones

Browse pgsql-es-ayuda by date

  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