Fórum Firebird existe o first, div, mod ? Como fazer ? #40366
26/11/2003
0
create procedure sp_distfichas
(
filial integer
)
as
declare variable nrcontrato integer;
declare variable nrcobrador integer;
declare variable nrresto integer;
declare variable i_cont integer;
begin
i_cont= 1;
select count(cod_cob) from cobrador where cod_fil= :filial
into :nrcobrador;
select count(cod_cont) from cliente clien,contrato cont where clien.cod_clien=cont.cod_clien
and cod_cob is null into :nrcontrato;
nrcontrato= div(:nrcontrato,:nrcobrador);
nrresto= mod(:nrcontrato,:nrcobrador);
while (:i_cont<=:nrcontrato) do
begin
update contrato
set cod_cob= (select first 1 skip :i_cont cod_cob from cobrador where cod_fil= :filial)
where cod_cob is null;
i_cont= i_cont+1;
end
end!
set term ; !
Dúvidas :
Dá erro no comando FIRST, ele existe no firebird, se não, como fazer para pegar x registros de uma tabela ?
Esta procedure se refere a distribuição de fichas por cobrador.
Alguém tem uma idéia de como fazer uma procedure que funcione ?
Se não fui bem claro basta postar as perguntas que responda pra facilitar o entendimento.
Midas
Curtir tópico
+ 0Posts
26/11/2003
Afarias
qual a mensagem de erro exatamente??
t+
Gostei + 0
27/11/2003
Midas
Dynamic SQL Error
SQL error code = -104
Token unknown - line 21, char 35
:
Statement: create procedure sp_distfichas
obs:
o erro ocorre justamente na linha
set cod_cob= (select first 1 skip :i_cont cod_cob from cobrador where cod_fil= :filial)
me parece que no :i_cont após o skip.
Gostei + 0
02/06/2009
Powerlog Tecnologia
[url]http://www.4shared.com/file/109403947/2afb7750/FB-PROCEDURES.html[/url]
CREATE PROCEDURE FU_DIV( WRAD INTEGER, WDIV INTEGER) RETURNS ( R_DIV INTEGER) AS begin /* Igual ao Delphi */ R_DIV = :WRAD / :WDIV; suspend;
CREATE PROCEDURE FU_MOD( WRAD INTEGER, WDIV INTEGER) RETURNS ( R_MOD INTEGER) AS begin /* Resto da divisão entre inteiros */ if(:wrad < :wdiv) then r_mod = :wdiv; else R_MOD = :WRAD - ((:WRAD / :WDIV) * :WDIV); suspend; end
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)