From: | "Julio Rivero" <jcrmlima(at)gmail(dot)com> |
---|---|
To: | "Lista PostGreSQL" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Error al llamar procedimiento con distintas variables de entrada |
Date: | 2006-05-23 19:10:02 |
Message-ID: | d34a12b60605231210x6784a4a5neb981a1aaa7da34@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola a todos:
Tengo un problema, cuando creo una función que tenga como variable de
entrada un dato de tipo int2, al querer ejecutarlo no me reconoce la
funcion, pero cuando le cambio al tipo int8 la variable de entrada, ahi
recien me acepta o mejor dicho me reconoce la funcion, este es el código:
EL flg aún no lo estoy utilizando
-- Creando la función
create or replace function sp_loggetartordpet
(
in art varchar,
in mar varchar,
in mod varchar,
in ini date,
in fin date,
in flg int2,
out res refcursor
)
as
$$
declare
vc_art varchar;
vc_mar varchar;
vc_mod varchar;
vc_que text;
vc_exe text;
begin
vc_exe := '
Select max(a."nCodArticulo") as "nCodArticulo",
max(b."cDescripcion") as "cDescripcion",
max(coalesce(b."cModelo",''S/M'')) as "cModelo",
max(b."nCodMarca") as "nCodMarca",
max(c."cDesMarca") as "cDesMarca",
sum(a."nCantidadAprobada") as "nCantidad"
From "logDItemPeticionArticulo" a,
"genCArticulo" b,
"genCMarca" c,
"logCPeticion" e
Where "nCantidadAprobada" > 0
And "dFecAprobacion" is not null
And sp_loggetcantaprpet(a."nCodArticulo",a."nCodObra",
a."nCodProyecto", a."nCodPeticion", a."nItemPeticion") <
a."nCantidadAprobada"
And b."nCodMarca" = c."nCodMarca"
And a."nCodArticulo" = b."nCodArticulo"
And a."nCodObra" = e."nCodObra"
And a."nCodProyecto" = e."nCodProyecto"
And a."nCodPeticion" = e."nCodPeticion"';
vc_que := '';
vc_art := upper(trim(art));
vc_mar := upper(trim(mar));
vc_mod := upper(trim(mod));
if vc_art is null then
vc_art := '%';
else
vc_art := '%'||vc_art||'%';
vc_que := vc_que||' And trim(upper(b."cDescripcion")) like
'''||vc_art||'''';
end if;
if vc_mar is null then
vc_mar := '%';
else
vc_mar := '%'||vc_mar||'%';
vc_que := vc_que||' And trim(upper(c."cDesMarca")) like
'''||vc_mar||'''';
end if;
if vc_mod is null then
vc_mod := '%';
else
vc_mod := '%'||vc_mod||'%';
vc_que := vc_que||' And trim(upper(b."cModelo")) like
'''||vc_mod||'''';
end if;
if flg = 0 then
end if;
if flg = 1 then
end if;
vc_exe := vc_exe||vc_que||' Group by a."nCodArticulo" Order by 1;';
raise notice 'Query: (%) ', vc_exe;
Open res For Execute vc_exe;
end;
$$
language 'plpgsql';
--- ahora llamandola:
begin; select sp_loggetartordpet(null,null,null,now()::date,now()::date,0)
--- Me sale este error:
ERROR: no existe la función sp_loggetartordpet("unknown", "unknown",
"unknown", date, date, integer)
HINT: Ninguna función coincide en el nombre y tipos de argumentos. Puede
desear agregar conversión explícita de tipos.
Ahora, elimino esta función y la vuelvo a crear pero esta vez con flg de
tipo int8 y ahi recien ejecuta la función, cual es el error???...
Y me ha venido sucediendo siempre que quiero crear funciones que acepten
varios tipos de datos enteros de diversa magnitud (int2, int4 e int8) es
decir que dentro de las variables de entrada esten combinados int2, int4 e
int8
Utilizo PostgreSQL 8.1.3 sobre WinXP
Gracias de antemano por las posibles respuestas
--
Saludos
Att,
Julio Rivero
Movil: 98817321
From | Date | Subject | |
---|---|---|---|
Next Message | Miguel Huerta | 2006-05-23 19:36:55 | Re: Error al llamar procedimiento con distintas variables de entrada |
Previous Message | Juan Martínez | 2006-05-23 17:05:09 | Re: Invalid page header |