PDA

Ver la Versión Completa : Multiplicar un campo sumado con un parametro


daragor
12-06-2014, 01:53:51
Hola compañeros, recurro a uds. para me que ayuden con una consulta que no me esta funcionando, me da error de sintaxis -902

En una consulta quiero multiplicar un campo sumado x un parametro, ya que el mismo es variable.
Ejemplo:
SELECT (SUM(precio)*:CI) AS total FROM ventas
CI es el parametro que toma la variable x ejemplo 50

Espero me entiendan muchas gracias!

jhonny
12-06-2014, 16:02:22
¿Esta consulta que mencionas, la estas tratando de ejecutar tal y cual?, porque si es así, seguramente lo que necesitas es vincularla a un procedimiento almacenado.

daragor
12-06-2014, 16:23:24
Estoy trabajando con lazarus, es un query en un procedimiento. Creo que no acepta multiplicacion por parametros?

ecfisa
12-06-2014, 18:37:43
Hola daragor.

Yo opino como jhonny, hasta donde conozco, Firebird no permite el uso de los parámetros de ese modo, vas a tener que hacerte un procedimiento almacenado...

Por ejemplo:

SET TERM ^;

CREATE PROCEDURE SP_SUMTOTAL(MULT DOUBLE PRECISION)
RETURNS (RESULT DOUBLE PRECISION)
AS
BEGIN
SELECT SUM(PRECIO) FROM VENTAS INTO RESULT;
RESULT = RESULT * MULT;
SUSPEND;
END^

SET TERM; ^


Desde Delphi:

with IBStoredProc1 do
begin
Params.ParamByName('MULT').AsFloat:= 5;
ExecProc;
ShowMessage(ParamByName('RESULT').AsString);
end;

Lo que te debo es como sería con el equivalente al TIBStoredProc en Lazarus ya que desconozco cuál es el componente.

Saludos :)

daragor
12-06-2014, 20:09:30
Gracias muchachos

ecfisa
12-06-2014, 20:27:09
De nada daragor, por si te pudiera servir de ayuda, te detallo la asignación anterior del TIBStoredProc en tiempo de ejecución.

with IBStoredProc1 do
begin
DataBase:= IBDatabase1;
StoredProcName:= 'SP_SUMTOTAL';
Params.Clear;
Params.CreateParam(ftFloat,'RESULT',ptOutput);
Params.CreateParam(ftFloat,'MULT',ptInput);
Params.ParamByName('MULT').AsFloat:= 5;
ExecProc;
ShowMessage(ParamByName('RESULT').AsString);
end;


Saludos :)