- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 17 anos, 3 meses atrás por
Rodrigo Mesquita.
-
AutorPosts
-
3 de novembro de 2008 às 6:34 pm #83466
cprado
ParticipanteBoa tarde…
Feras tenho a seguinte situação tenho cerca de 1800 alunos que preciso distribuir esses alunos em salas que cabem no maximo 50, como devo proceder para que um scrip entenda que devor ordenar os aluno em ordem alafbética colocando-os cada 50 registros sala1, próximos 50 sala2, próximos 50 sala3, e assim até o final…..
Obrigado
Nil
3 de novembro de 2008 às 7:02 pm #83469Rodrigo Mesquita
ParticipanteRecomendo vc montar uma procedure, que tenha um cursor que consulte a tabela de alunos, depois monte um loop lendo esse cursor para inserir a informação da sala, e a cada 50 registros inseridos ele vá incrementando o número da sala.
3 de novembro de 2008 às 7:05 pm #83470Regis Araujo
ParticipanteNil, boa tarde!
Você quer um select que faça isto, ou uma procedure?
E a ordem alfabetica é de qual maneira?
Sala1 ——- Sala2
Amelia ——- Angelina
Beatriz ——- Biaca
Camila ——- Carla
Fernando ——- FranciscoOu é
Sala1 ——- Sala2
Amelia ——- Bianca
Angelina ——- BeatrizAbraços…
3 de novembro de 2008 às 7:08 pm #83471cprado
ParticipanteTem como me passar o exemplo da Procedure….
Bem seria assim
Sala 1
Ana
Angela
Beatriz
Brunoe assim que ter 50 iria para proóxioma sala que seria a sala2
Sala2
Claudio
Caio….3 de novembro de 2008 às 7:22 pm #83472Regis Araujo
ParticipanteNil, boa tarde!
A procedure ficaria mais ou menos assim..
———————————————————————————
CREATE OR REPLACE PROCEDURE INSEREALUNOSSALA ISCURSOR 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…
3 de novembro de 2008 às 9:43 pm #83483Rodrigo Mesquita
ParticipanteEssa procedure do Regis é sobre oq eu estava falando. qualquer duvida posta aqui a estrutura das tabelas.
-
AutorPosts
- Você deve fazer login para responder a este tópico.