Pular para o conteúdo
#83472
Avatar photoRegis Araujo
Participante

    Nil, boa tarde!

    A procedure ficaria mais ou menos assim..

    ———————————————————————————
    CREATE OR REPLACE PROCEDURE INSEREALUNOSSALA IS

    CURSOR cAlunos IS
    SELECT TB.CAMPO1, TB.CAMPO2, TB.CAMPO3, TB.CAMPO4, TB.CAMPOCHAVE
    FROM OWNER.TABELA TB
    WHERE TB.ATUALIZADO = ‘N’
    ORDER BY NOME;

    SALA NUMBER := 1;
    Cont NUMBER := 0;

    BEGIN

    FOR rAlunos IN cAlunos LOOP

    IF Cont = 50 THEN
    Cont := 0
    SALA := SALA +1
    END IF;

    — INSERT PARA VC GRAVAR EM QUAIS SALAS DEVERÃO FICAR CADA ALUNO
    INSERT INTO OWNER.TB_SALAS
    (CAMPO1, CAMPO2, CAMPO3, CAMPO4, SALA)
    VALUES (rVCTO.CAMPO1, rVCTO.CAMPO2, rVCTO.CAMPO3, rVCTO.CAMPO4, SALA);

    — OU CASO FOR MARCAR A SALA EM UMA TABELA JÁ EXISTENTE, COMENTE A PARTE DE CIMA E DESCOMENTE A PERDE ABAIXO
    /*
    UPDATE OWNER.TABELA TB
    SET TB.SALA = SALA,
    TB.ATUALIZADO = ‘S’
    WHERE TB.CAMPOCHAVE = rAlunos.CAMPOCHAVE;

    */
    — UPDATE PARA VC TER O CONTROLE DE QUEM JÁ FOI ALTERADO
    UPDATE OWNER.TABELA TB
    SET TB.ATUALIZADO = ‘S’
    WHERE TB.CAMPOCHAVE = rAlunos.CAMPOCHAVE;

    Cont := Cont +1

    END LOOP;

    END INSEREALUNOSSALA;

    Abraços…