Pesquisar na Comunidade
Mostrando resultados para as tags ''pl sql''.
Encontrado 1 registro
-
Olá, depois de apanhar muito dentro do scriptcase e também em php com estouro de memória, decidi que o melhor lugar para calcular todas aquelas regras de MMN Binário, é dentro do próprio banco de dados. Assim, a aplicação fica mais leve, e limpa. Então , como marinheiro de primeira viagem em PL Sql, estou tendo algumas dificuldades, como trabalhar com cursores, extruturas de repetição, e chamar uma procedure dentro da outra... neste primeiro exemplo, quero apenas somar os pontos de todos os downlines a partir de uma determinada franquia, porém, está com um erro que não consigo achar. Alguém pode me ajudar? Segue a procedure: -- -------------------------------------------------------------------------------- -- Routine DDL -- Note: comments before and after the routine body will not be stored by the server -- -------------------------------------------------------------------------------- DELIMITER $$ CREATE PROCEDURE `lkp_diretos_de` (IN upline int,IN market int, IN ciclo int, IN secao varchar(45),OUT total_pontos float) BEGIN DECLARE done_arr_rede1,done_arr_rede2,diretos1,diretos2,fra_id,fra_derramado_em_id,fra_upline_id ,fra_id2,fra_derramado_em_id2,fra_upline_id2 INTEGER DEFAULT 0; DECLARE fra_dat_cadasto,fra_dat_cadasto2 DATETIME; DECLARE fra_lado_equipe_upline,fra_lado_equipe_upline2 char(1); DECLARE fra_saldo_pontos,fra_saldo_pontos2 float DEFAULT 0; DEClARE arr_rede1 CURSOR FOR SELECT mmn_franquias.fra_id, mmn_franquias.fra_dat_cadasto, mmn_franquias.fra_derramado_em_id, mmn_franquias.fra_upline_id, mmn_franquias.fra_lado_equipe_upline, mmn_franquias.fra_saldo_pontos FROM mmn_franquias ORDER BY mmn_franquias.fra_dat_cadasto; DEClARE arr_rede2 CURSOR FOR SELECT mmn_franquias.fra_id, mmn_franquias.fra_dat_cadasto, mmn_franquias.fra_derramado_em_id, mmn_franquias.fra_upline_id, mmn_franquias.fra_lado_equipe_upline, mmn_franquias.fra_saldo_pontos FROM mmn_franquias ORDER BY mmn_franquias.fra_dat_cadasto; -- declare NOT FOUND handler DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_arr_rede1 = 1; -- declare NOT FOUND handler DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_arr_rede2 = 1; OPEN arr_rede1; REPEAT FETCH arr_rede1 INTO fra_id, fra_dat_cadasto, fra_derramado_em_id, fra_upline_id, fra_lado_equipe_upline, fra_saldo_pontos; IF NOT done_arr_rede1 THEN if locate(fra_upline,upline)>0 then OPEN arr_rede2; while done_arr_rede2 = 1 do FETCH arr_rede2 INTO fra_id2, fra_dat_cadasto2, fra_derramado_em_id2, fra_upline_id2, fra_lado_equipe_upline2, fra_saldo_pontos2; if fra_upline_id2 = fra_upline_id1 then set done_arr_rede2 = 1; set upline = concat (upline,',',fra_upline_id2); set total_pontos = total_pontos + fra_saldo_pontos2; end if; end while; CLOSE arr_rede2; end if; END IF; UNTIL done END REPEAT; CLOSE arr_rede1; END