[firebase-br] Select em Procedure
Sérgio Alexandre Gianezini
sergio_ag em terra.com.br
Qua Ago 26 19:20:02 -03 2009
"for execute statement", fazendo isso, é praticamente as mesma coisa que por
um query no programa e mandar rodar, devia é por o select literalmente (o
que deixa pre-compilado e preparado).
Quanto ao overflow, algum campo do select está maior que a variavel que está
recebendo... pode forçar o sum usando cast() e ver o que retorna...
"Edison - Precisa Informatica Ltda"
<edison em precisa.inf.br> escreveu na mensagem
news:4B2FA96FE34C4D65BEA02AE52A11CD97 em Saulibueno...
Ola pessoal
Estou construindo uma procedure que retorna o codigo do cliente e o valor
gasto na empresa
- na Tabela de movimento o codigo do cliente e integer, e o valor gasto e
decimal(15,2)
eu nao consigo retornar na procedure a soma do valor gasto ( utilizando o
sum )
se eu retornar o valor sem o sum da certo,
e somando a coluna, o fb retorna o seguinte erro Arithmetic overflown
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
fonte do procedure
CREATE PROCEDURE SOL_SECA001 (
i_chavereg integer,
s_empresa varchar(300),
d_dataini date,
d_datafin date)
returns (
id_chavereg integer,
id_secao smallint,
id_grupo smallint,
id_subgrupo smallint,
id_cliente integer,
de_razao varchar(40),
vl_total decimal(15,2))
as
declare variable ssql varchar(700);
BEGIN
sSql = ' SELECT TBLCDSITE0.IDCHAVEREG, ' ;
sSql = sSql || ' TBLCDSITE0.IDSECAO, ';
sSql = sSql || ' TBLCDSITE0.IDGRUPO, ';
sSql = sSql || ' TBLCDSITE0.idsubgrupo, ';
sSql = sSql || ' TBLMVMITE0.idCliente, ';
sSql = sSql || ' TBLCDSCLI0.RAZAO, ';
sSql = sSql || ' TBLMVMITE0.VLRTOTAL ';
sSql = sSql || ' FROM TBLMVMITE0 LEFT JOIN TBLCDSITE0 ON
TBLMVMITE0.IDITEM = TBLCDSITE0.IDITEM ' ;
sSql = sSql || ' LEFT JOIN TBLCDSCLI0 ON
TBLMVMITE0.IDCLIENTE = TBLCDSCLI0.IDCLIENTE ' ;
sSql = sSql || ' WHERE TBLMVMITE0.IDEMPRESA IN ( ' || :s_empresa || ')'
;
sSql = sSql || ' AND TBLMVMITE0.dtvalida BETWEEN ' || '''' ||
:d_DataIni || '''' || ' and ' ;
sSql = sSql || '''' || :d_DataFin || ''''
;
sSql = sSql || ' and TBLMVMITE0.natureza = ' || '''' || 'S' || ''''
;
sSql = sSql || ' and TBLCDSITE0.idchavereg = ' || :i_ChaveReg
;
sSql = sSql || ' ORDER BY TBLCDSITE0.IDSECAO, '
;
sSql = sSql || ' TBLCDSITE0.IDGRUPO, '
;
sSql = sSql || ' TBLCDSITE0.IDSUBGRUPO '
;
for execute statement
sSql
Into :id_ChaveReg, :id_Secao, :id_Grupo, :id_SubGrupo, :id_Cliente,
:de_Razao, :vl_Total
do
suspend;
end^
Atenciosamente
Edison Savaris
Desenvolvedor
edison em precisa.inf.br
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista