[firebase-br] [Fwd: FOR EXECUTE STATEMENT]
Luiz Carlos
trackmaster em bol.com.br
Qua Mar 16 14:51:27 -03 2005
Pessoal, boa tarde!
estou com um pequeno problema em minha stored procedure, gostaria de
executar um comando dentro de uma variavel com o FOR EXECUTE STATEMENT,
mas quando jogo o comando dentro da variavel, dá um erro de Fim de
comando inexperado, segue abaixo a procedure:
----------------------------------------------------------------------------------------------------
CREATE PROCEDURE HV2_SP (
DT1 VARCHAR(20),
DT2 VARCHAR(20),
MARCOD VARCHAR(3),
PROC INTEGER)
RETURNS (
HVE_ITEM VARCHAR(27),
HVE_MARCA VARCHAR(3),
HVE_PROC INTEGER,
REF_SALDO FLOAT,
HVE_QTDE INTEGER,
CLF_NOME_FANTASIA VARCHAR(20),
HVE_VENDINT VARCHAR(15),
HVE_DATANF DATE,
HVE_NUMNF INTEGER,
HVE_MESREF INTEGER,
HVE_ANOREF INTEGER,
HVE_CNPJCPF VARCHAR(18),
HVE_CKD CHAR(1))
AS
DECLARE VARIABLE COMANDO VARCHAR(10000);
BEGIN
if (:proc is not null) then
COMANDO = 'SELECT HVE_ITEM,HVE_MARCA,HVE_PROC,HVE_QTDE,
HVE_VENDINT,HVE_DATANF,HVE_NUMNF,
HVE_MESREF,HVE_ANOREF,HVE_CNPJCPF,HVE_CKD
FROM histvendas
WHERE
((HVE_DATANF>='||:dt1||') AND
(HVE_DATANF<='||:dt2||')) AND
(HVE_MARCA='||:marcod||') AND
(HVE_PROC= '||:proc||') AND
(HVE_CKD IS null)
ORDER BY 1,8' ;
if (:proc is null) then
COMANDO = 'SELECT HVE_ITEM,HVE_MARCA,HVE_PROC,HVE_QTDE,
HVE_VENDINT,HVE_DATANF,HVE_NUMNF,
HVE_MESREF,HVE_ANOREF,HVE_CNPJCPF,HVE_CKD
FROM histvendas
WHERE
((HVE_DATANF>='||:dt1||') AND
(HVE_DATANF<='||:dt2||')) AND
(HVE_MARCA='||:marcod||') AND
(HVE_CKD IS null)
ORDER BY 1,8' ;
FOR
execute statement :COMANDO into :HVE_ITEM,
:HVE_MARCA,
:HVE_PROC,
:HVE_QTDE,
:HVE_VENDINT,
:HVE_DATANF,
:HVE_NUMNF,
:HVE_MESREF,
:HVE_ANOREF,
:HVE_CNPJCPF,
:HVE_CKD
DO
BEGIN
select CLF_NOME_FANTASIA from clifor where CLF_CNPJCPF =
:hve_cnpjcpf into :clf_nome_fantasia;
select distinct (sum(REF_SALDO)) from referencia where REF_ITEM =
:hve_item into :ref_saldo;
SUSPEND;
END
END
----------------------------------------------------------------------------------------------------
Quando eu executo no debbuger, ela me mostra a variavel comando da
seguinte forma:
COMANDO = 'SELECT HVE_ITEM,HVE_MARCA,HVE_PROC,HVE_QTDE,
HVE_VENDINT,HVE_DATANF,HVE_NUMNF,
HVE_MESREF,HVE_ANOREF,HVE_CNPJCPF,HVE_CKD
FROM histvendas
WHERE
((HVE_DATANF>=25.03.2004) AND
(HVE_DATANF<=25.03.2005)) AND
(HVE_MARCA=FRM) AND
(HVE_PROC= 4') AND
(HVE_CKD IS null)
ORDER BY 1,8' ;
minha duvida:
nos campos de data e onde está escrito as datas e o FRM não deveriam
estar desta forma para o comando executar:
((HVE_DATANF>='25.03.2004') AND
(HVE_DATANF<='25.03.2005')) AND
(HVE_MARCA='FRM') AND
se sim, como faço pra concatenar a aspas nesse cenário?
desculpem pela mensagem gigantesca mas eh que tou precisando de um help!!
Abraços!
Luiz Carlos.
Mais detalhes sobre a lista de discussão lista