Pular para o conteúdo
  • Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por Rodrigo Mesquita.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #83466
    cprado
    Participante

      Boa 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

      #83469
      Rodrigo Mesquita
      Participante

        Recomendo 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.

        #83470
        Avatar photoRegis Araujo
        Participante

          Nil, 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 ——- Francisco

          Ou é

          Sala1 ——- Sala2
          Amelia ——- Bianca
          Angelina ——- Beatriz

          Abraços…

          #83471
          cprado
          Participante

            Tem como me passar o exemplo da Procedure….

            Bem seria assim

            Sala 1
            Ana
            Angela
            Beatriz
            Bruno

            e assim que ter 50 iria para proóxioma sala que seria a sala2

            Sala2
            Claudio
            Caio….

            #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…

              #83483
              Rodrigo Mesquita
              Participante

                Essa procedure do Regis é sobre oq eu estava falando. qualquer duvida posta aqui a estrutura das tabelas.

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress