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
--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo 
agradecerán

Responder a