Re: Error al llamar procedimiento con distintas variables de entrada

From: "Julio Rivero" <jcrmlima(at)gmail(dot)com>
To: "Miguel Huerta" <hgmiguel(at)gmail(dot)com>
Cc: "Lista PostGreSQL" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Error al llamar procedimiento con distintas variables de entrada
Date: 2006-05-23 19:49:43
Message-ID: d34a12b60605231249uf46ebf6odddf6e111a5baf8f@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Aja!!!, funciono con el casteo, gracias.

Era el casteo, ahora, no deberia aceptar el procedimiento tal como lo estoy
pasando, sin necesidad de castearlo?

On 5/23/06, Miguel Huerta <hgmiguel(at)gmail(dot)com> wrote:
>
>
>
> On 5/23/06, Julio Rivero <jcrmlima(at)gmail(dot)com> wrote:
> >
> > 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.
> >
>
> select sp_loggetartordpet(null,null
> ,null,now()::date,now()::date,0::int2)
>
> Tal vez funciones asi, aunque no se bien (tecnicamente hablando) cual es
> el error
>
> 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
> >
>
>
>
> --
> http://hgMiguel.blogspot.com/
> hgMiguel(at)gmail(dot)com
>

--
Saludos
Att,
Julio Rivero
Movil: 98817321

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2006-05-23 20:53:25 Re: Error al llamar procedimiento con distintas variables de entrada
Previous Message Miguel Huerta 2006-05-23 19:36:55 Re: Error al llamar procedimiento con distintas variables de entrada