como chamar uma procedure no delphi?
criei esta procedure, usando o firebird 1.5:
CREATE PROCEDURE PROC_SOMAITEM (
NOTA_NUMERO INTEGER,
NOTA_DATA DATE)
RETURNS (
VALOR_TOTITEM DOUBLE PRECISION)
AS
BEGIN
SELECT SUM(ITEM_QTDE * ITEM_VALUNIT) FROM nfa_itemnota
WHERE NOTA_NUMERO = :nota_numero and NOTA_DATA = :nota_data
INTO :valor_totitem;
EXIT;
END
ficou joia....
estou tentando chamá-la no delphi desta forma com o componente sqldataset
SQLProc_totitem.Active:=False;
SQLProc_totitem.CommandText:=
´SELECT * FROM PROC_SOMAITEM(´´IntToStr(dmdados.ClientNotaNOTA_NUMERO.Value)´´,´´DateTimeToStr(dmdados.ClientNotaNOTA_DATA.Value)´´)´;
LBL_EXTENSO.Caption := Extenso(SQLProc_totitem.ParamByName(´VALOR_TOTITEM´).asFloat);
SQLProc_totitem.Active:=True;
so que na hora de executar ele da um erro:
SQLProc_totitem: Parameter ´VALOR_TOTITEM´ not found
como posso resolver, sendo que tenho que passar dois parametro um inteiro e outro do tipo data...?
CREATE PROCEDURE PROC_SOMAITEM (
NOTA_NUMERO INTEGER,
NOTA_DATA DATE)
RETURNS (
VALOR_TOTITEM DOUBLE PRECISION)
AS
BEGIN
SELECT SUM(ITEM_QTDE * ITEM_VALUNIT) FROM nfa_itemnota
WHERE NOTA_NUMERO = :nota_numero and NOTA_DATA = :nota_data
INTO :valor_totitem;
EXIT;
END
ficou joia....
estou tentando chamá-la no delphi desta forma com o componente sqldataset
SQLProc_totitem.Active:=False;
SQLProc_totitem.CommandText:=
´SELECT * FROM PROC_SOMAITEM(´´IntToStr(dmdados.ClientNotaNOTA_NUMERO.Value)´´,´´DateTimeToStr(dmdados.ClientNotaNOTA_DATA.Value)´´)´;
LBL_EXTENSO.Caption := Extenso(SQLProc_totitem.ParamByName(´VALOR_TOTITEM´).asFloat);
SQLProc_totitem.Active:=True;
so que na hora de executar ele da um erro:
SQLProc_totitem: Parameter ´VALOR_TOTITEM´ not found
como posso resolver, sendo que tenho que passar dois parametro um inteiro e outro do tipo data...?
Duarteol
Curtidas 0
Respostas
Maicongabriel
24/06/2004
SQLProc_totitem.Active:=False;
SQLProc_totitem.Close;
SQLProc_totitem.CommandText:= ´SELECT * FROM PROC_SOMAITEM(´´IntToStr(dmdados.ClientNotaNOTA_NUMERO.Value)´´,´´DateTimeToStr(dmdados.ClientNotaNOTA_DATA.Value)´´)´;
SQLProc_totitem.CommandText:= ´SELECT * FROM PROC_SOMAITEM(´ + IntToStr(dmdados.ClientNotaNOTA_NUMERO.Value) + ´,´ + DateTimeToStr(dmdados.ClientNotaNOTA_DATA.Value) + ´)´;
LBL_EXTENSO.Caption := Extenso(SQLProc_totitem.ParamByName(´VALOR_TOTITEM´).asFloat);
Como você quer ´puxar´ um valor, antes mesmo de abrir ´SQLProc_totitem´ ?
E ainda, por que você esta puxando um parâmetro?
Não acha que deveria puxar um resultado ?
E porque não utiliza um ´TSQLStoredProc´ ? Ja que esta utilizando DBX...
SQLProc_totitem.Active:=True;
SQLProc_totitem.Open;
GOSTEI 0
Afarias
24/06/2004
procedimentos q não usam SUSPEND devem ser chamaos com
EXECUTE PROCEDURE
T+
EXECUTE PROCEDURE
T+
GOSTEI 0