PDA

Ver la Versión Completa : Problemas ejecutando funciones de PostgreSQL con Delphi 5 (BDE)


DagariK
24-10-2008, 19:11:34
un saludo a todos los foreros,

verán tengo un lio que me tiene fuera de casillas ya, tengo en PostgreSQL algunas funciones, las cuales reciben parametros y retorna algunos otros, a traves de un objeto TSTOREDPROC puedo seleccionar la función que necesito, y éste automáticamente me lista los parámetros con sus respectivos tipos de dato y los identifica si son de entrada o salida.

luego de asignar los valores a cada parámetro le doy EXECPROC, y aqui es donde me lanza el siguiente error


ERROR NO EXISTE LA FUNCTION spnmcalpromconcepto(integer, double precision, UNKNOWN,
timestamp without time zone, timestamp without time zone, integer, UNKNOWN)


la verdad desconozco del porque DELPHI interpreta los parámetros de tipo caracter como UNKNOWN, a continuación les dejo el encabezado de mi función.

CREATE OR REPLACE FUNCTION spnmcalpromconcepto (
IN P_SiCodEmpr INTEGER, -- Codigo de Empresa
IN P_DeCodEmpl NUMERIC, -- Codigo del empleado
IN P_StNroCont CHARACTER VARYING, -- Número de Contrato
IN P_DtFecInic TIMESTAMP, -- Fecha Inicial del calculo
IN P_DtFecFina TIMESTAMP, -- Fecha Final del calculo
IN P_SiCodConc SMALLINT, -- Codigo del concepto a promediar
IN P_StTipProm CHARACTER VARYING, -- Indicador de si es con el valor pagado o el valor real OUT P_DeValProm NUMERIC) -- Base de liquidacion
AS
$BODY$
DECLARE


el tipo de dato

CHARACTER VARYING

lo he cambiado por

- CHAR
- VARCHAR

y en ninguno de los casos me ha funcionado,

en delphi por código intenté lo siguiente, pero obtuve el mismo resultado

if (UpperCase(gStDrvKac) = 'POSTGRESQL ANSI') then
begin
With StpPromConc_Pgsql Do begin close; StoredProcName := 'spnmcalpromconcepto';
Params.CreateParam(ftSmallint, 'p_sicodempr', ptInput);
Params.CreateParam(ftFloat, 'p_decodempl', ptInput);
Params.CreateParam(ftString, 'p_stnrocont', ptInput);
Params.CreateParam(ftDateTime, 'p_dtfecinic', ptInput);
Params.CreateParam(ftDateTime, 'p_dtfecfina', ptInput);
Params.CreateParam(ftSmallint, 'p_sicodconc', ptInput);
Params.CreateParam(ftString, 'p_sttipprom', ptInput);
Params.CreateParam(ftFloat, 'p_devalprom', ptOutput);
end; // Fin with de Stored procedure
end


espero puedan ayudarme, ya que he intentado de todo, y por ahora nada ha funcionado,

Gracias