none
Cursores Nota RRS feed

  • Pergunta

  • Boa tarde Pessoal,

    Preciso terminar um trabalho acadêmico onde uma e última questão é a seguinte:

    4. Procedure com cursor para atualizar a situação de cada aluno (A (Aprovado) - R (Reprovado) - E (Exame)) de acordo com as médias das notas).

    O script postei nesse link: http://pastebin.com/sPDkUGta

    Alguém pode me ajudar?

    Obrigado!

    • Movido José Diz segunda-feira, 4 de junho de 2018 12:04
    quinta-feira, 12 de novembro de 2015 17:59

Respostas

  • Segue !

    Teste o resultado, e cuidado para seu professor não acessar o forum !!! rsss

    DECLARE @idAluno INT
    	,@situacao CHAR(1)
    
    declare cur 
    cursor for 
    select idAluno, 
    	CASE WHEN res.nota >= 7 THEN 'A' 
    		WHEN res.nota < 3 THEN 'R'
    		ELSE 'E' END situacao
    FROM [escola].[dbo].[Aluno] alu
    INNER JOIN [escola].[dbo].[ResultadoAvaliacao] res ON alu.idAluno = res.idAluno 
    
    open cur
    fetch next from cur
    	into @idAluno, @situacao 
    while @@fetch_status = 0 
    begin
    
    	UPDATE [escola].[dbo].[Aluno] SET situacao = @situacao 
    	WHERE idAluno = @idAluno
    
    	end
    	fetch next from cur
    		into @idAluno, @situacao 
    end
    		
    close cur
    deallocate cur


    Flávio Farias "May the Force be with you" Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"


    quinta-feira, 12 de novembro de 2015 18:27

Todas as Respostas

  • Segue !

    Teste o resultado, e cuidado para seu professor não acessar o forum !!! rsss

    DECLARE @idAluno INT
    	,@situacao CHAR(1)
    
    declare cur 
    cursor for 
    select idAluno, 
    	CASE WHEN res.nota >= 7 THEN 'A' 
    		WHEN res.nota < 3 THEN 'R'
    		ELSE 'E' END situacao
    FROM [escola].[dbo].[Aluno] alu
    INNER JOIN [escola].[dbo].[ResultadoAvaliacao] res ON alu.idAluno = res.idAluno 
    
    open cur
    fetch next from cur
    	into @idAluno, @situacao 
    while @@fetch_status = 0 
    begin
    
    	UPDATE [escola].[dbo].[Aluno] SET situacao = @situacao 
    	WHERE idAluno = @idAluno
    
    	end
    	fetch next from cur
    		into @idAluno, @situacao 
    end
    		
    close cur
    deallocate cur


    Flávio Farias "May the Force be with you" Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"


    quinta-feira, 12 de novembro de 2015 18:27
  • Eu iria mais longe...

    Se ele acessar o fórum, é bom avisar pra que esse tipo de coisa não precisa ser feito com cursor...

    E que cursor é do mal e não deveria ser ensinado em curso ou faculdade. :-)

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    quinta-feira, 12 de novembro de 2015 19:17
  • Eu iria mais longe...

    Se ele acessar o fórum, é bom avisar pra que esse tipo de coisa não precisa ser feito com cursor...

    E que cursor é do mal e não deveria ser ensinado em curso ou faculdade. :-)

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    hahahaha, muito bom!

    Concordo contigo!


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    sexta-feira, 13 de novembro de 2015 11:24
  • Bom dia

    exemplo.

    create or replace function SituacaoAluno(Situacao in char)
    return VARCHAR2
    is 
    Situacao_Aluno varchar2(50);
    begin
      if Situacao = 'A' then
      Situacao_Aluno := 'APROVADO';
      if Situacao = 'R' then
      Situacao_Aluno := 'REPROVADO';
      if Situacao = 'E' then
      Situacao_Aluno := 'EXAME';	
    end if;
    return Situacao_Aluno;
    end;
    /

    para visualizar o select

    select idAluno,nome, SituacaoAluno(situacao) from Aluno;

    Abraço

    • Sugerido como Resposta Danilo Telles sexta-feira, 13 de novembro de 2015 11:40
    • Não Sugerido como Resposta Danilo Telles sexta-feira, 13 de novembro de 2015 14:24
    sexta-feira, 13 de novembro de 2015 11:40
  • Danilo,

    Observe que a solicitação foi para que fosse feito um procedure para atualização de dados através de um cursor, e não uma função que retorne o status do aluno. Sem contar que a criação da função não é direcionada para SQL Server.

    Outra observação: por favor, desmarque a tua sugestão do teu próprio post como resposta, uma vez que ele não está de acordo com o que foi solicitado. Sem contar que não é uma boa prática marcar suas respostas como resposta proposta, sem ao menos aguardar uma definição do solicitante.

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    sexta-feira, 13 de novembro de 2015 11:57
  • Concordo que houve uma equivocação no que foi pedido e no que o informei, referente ao marcar como resposta como proposta, não significa que é a resposta, existe uma grande diferença eu propor como resposta e então sim o autor da pergunta aceitar. não significa que estou afirmando a resposta como correta e sim simplesmente para que o autor saiba que estou na intenção de ajuda-lo tentando responder vossa pergunta.

    http://social.technet.microsoft.com/wiki/pt-br/contents/articles/30848.voce-deve-ou-nao-propor-como-resposta-sua-resposta-nos-foruns-msdn-ou-technet.aspx

    sexta-feira, 13 de novembro de 2015 14:24
  • Concordo que houve uma equivocação no que foi pedido e no que o informei, referente ao marcar como resposta como proposta, não significa que é a resposta, existe uma grande diferença eu propor como resposta e então sim o autor da pergunta aceitar. não significa que estou afirmando a resposta como correta e sim simplesmente para que o autor saiba que estou na intenção de ajuda-lo tentando responder vossa pergunta.

    http://social.technet.microsoft.com/wiki/pt-br/contents/articles/30848.voce-deve-ou-nao-propor-como-resposta-sua-resposta-nos-foruns-msdn-ou-technet.aspx

    De acordo com o próprio texto existem mais razões para não propor do que o contrário !
    Além do mais como muitas vezes é um novo frequentador, ele não sabe como funciona as regras principalmente no que diz respeito a pontuação ! 
    E em uma thread que tem mais de uma resposta, uma proposta feita pelo próprio autor pode sim induzir a uma validação sem que outras opções tenham sido testadas.
    Nessa questão específica eu e vc respondemos, os dois podem ter errado ou ao contrário, o usuário precisa testar as duas em teoria é claro. Quanto menos criar situações que possam induzir a um cenário melhor !!!!
     

    Flávio Farias "May the Force be with you" Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    sexta-feira, 13 de novembro de 2015 14:49
  • Eu iria mais longe...

    Se ele acessar o fórum, é bom avisar pra que esse tipo de coisa não precisa ser feito com cursor...

    E que cursor é do mal e não deveria ser ensinado em curso ou faculdade. :-)

    []'s!


    /* Logan Destefani Merazzi - DBA | @LoganMerazzi | http://www.merazzi.eti.br
    Se a resposta for útil, vote nela. Se resolveu, marque-a como resposta. */

    Eu acho que academicamente deve ser ensinado principalmente em uma disciplina onde fale de performance e ai levar propostas melhores comparando !!!
    Mas o problema é que tem muito professor que já está fora do mercado profissional, atuando apenas academicamente ou então já está como gestor sem colocar a mão na massa, isso causa um impacto enorme nos alunos !

    Flávio Farias "May the Force be with you" Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    sexta-feira, 13 de novembro de 2015 14:52