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…