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 :)
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.