Fórum como chamar uma procedure no delphi? #45120
24/06/2004
0
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
Curtir tópico
+ 0
Responder
Posts
24/06/2004
Maicongabriel
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;
Responder
Gostei + 0
24/06/2004
Afarias
procedimentos q não usam SUSPEND devem ser chamaos com
EXECUTE PROCEDURE
T+
EXECUTE PROCEDURE
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)