Re: error al hacer un select sobre una función

From: "postgres Emanuel CALVO FRANCO" <postgres(dot)arg(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: error al hacer un select sobre una función
Date: 2008-10-29 14:25:05
Message-ID: f205bb120810290725l1671990cx3fb80e4c17d36cf@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

no, pero de esta forma no sería lo que intentas hacer...

me refería a la definición de la función cuando hablaba del ddl.

el error te esta tirando:
ERROR: no existe la función spnmcalpromconcepto(integer, integer,
unknown, unknown, unknown, integer, unknown)
si te fijas el segundo parametro es integer, o sea que te está tomando
el paramtero como integer y

CREATE OR REPLACE FUNCTION spnmcalpromconcepto (
IN PSiCodEmpr INTEGER, -- Codigo de Empresa
IN PDeCodEmpl NUMERIC, -- Codigo del empleado
IN PStNroCont CHARACTER VARYING (12), -- Número de Contrato
IN PDtFecInic TIMESTAMP, -- Fecha Inicial del calculo
IN PDtFecFina TIMESTAMP, -- Fecha Final del calculo
IN PSiCodConc SMALLINT, -- Codigo del concepto a promediar
IN PStTipProm CHARACTER VARYING (1), -- Indicador de si es con
el valor pagado o el valor real
OUT PDeValProm NUMERIC, -- Base de liquidacion
OUT PDePorBase NUMERIC, -- Porcentaje de Base
OUT PDeValBase NUMERIC, -- Base de liquidaci¢n
OUT PDeValIngr NUMERIC, -- Valor ingresos totales
OUT PDeValEgre NUMERIC, -- Valor egresos totales
OUT PdeBasFija NUMERIC
)
RETURNS record

la función la llamas así:

SELECT P_DeValProm
from spnmcalpromconcepto (1, 2969397, '1', '01/09/2008', '30/11/2008', 1, '1')
spnmcalpromconcepto(integer, integer, unknown, unknown,
unknown, integer, unknown) <--linea del error

le estas pifiando a los tipos de datos.
además estas utilizando TIMESTAMP y le pasas una fecha común (acordate
que el TIMESTAMP consta de 4 bytes), en todo caso
definilo como DATE
en el tercer parametro lo declaras como character de 12 y le pasas
'1', pasale '000...1' y declaralo como varchar(12).
respecto a las fechas fijate bien.
De alguna se debe poder parsear la consulta en delphi... podrias pasar
como estas llamando la consulta desde el lenguajes?

Asegurate que la función compiló correctamente y que esta visible
desde tu base de datos haciendo \df <nombrefunc> desde el psql

2008/10/29 Erik Ferney Cubillos Garcia <erikferneycubillos(at)gmail(dot)com>:
> Hola Emanuel, gracias, queria preguntarte y lo siento por la ignorancia...
>
> que es la DDL, verás traté de quitarle y ponerle los espacios de la misma
> forma en que declaré la función pero nada,
>
>
>> sacaste los espaciosdespues del nombre (en el ddl y en la consulta) ?
>> creo que una vez tuve ese inconveniente
>
> y bueno hice un select de esta forma
>
> SELECT PDeValProm
> from spnmcalpromconcepto (1 :: INTEGER,
> 2969397 :: NUMERIC,
> '1' :: CHARACTER VARYING,
> '01/09/2008' :: TIMESTAMP,
> '30/11/2008' :: TIMESTAMP,
> 1 :: SMALLINT,
> '1' :: CHARACTER VARYING)
>
> de esta forma me devuelve un valor, pero en DELPHI no puedo hacerlo de esta
> forma, ya que los dos punto me generan error
>
> Gracias
>
> --
> Atentamente,
>
>
> ______________________________
> ERIK FERNEY CUBILLOS GARCIA
> Ing. Desarrollo - Kactus HR
> DIGITAL WARE LTDA.
> Calle 72 No. 12-65 Piso 2
> Bogotá, Colombia
> erikc(at)digitalware(dot)com(dot)co
> www.digitalware.com.co
>

--
Emanuel Calvo Franco
Syscope Postgresql DBA
BaPUG Member

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Erik Ferney Cubillos Garcia 2008-10-29 14:30:30 Re: error al hacer un select sobre una función
Previous Message Erik Ferney Cubillos Garcia 2008-10-29 14:04:10 Re: error al hacer un select sobre una función