Melhorar um código CASE
:unsure: Olá pessoal, fiz o seguinte código que está funcional, mas gostaria de melhorá-lo. É o seguinte tenho um valor de carga horária que é int e quando no banco ela for cadastrada como 0, no banco de dados aparecerá a mensagem: Valor Cadastrado Incorretamente, se não for 0, aparecerá o valor que está cadastrado no banco, relacionado à carga_horária.
A solução que eu encontrei foi:
DECLARE @mensagem VARCHAR(255)
DECLARE @cd_aluno INT
SET @mensagem = ''
SET @cd_aluno = $cod_aluno
SELECT @mensagem = @mensagem + (
CASE @mensagem
WHEN '' THEN '' ELSE ''
END
) +
(
CASE cur.carga_horaria
WHEN 0 THEN 'VALOR CADASTRADO INCORRETAMENTE'
WHEN 10 THEN '10'
WHEN 16 THEN '16'
WHEN 30 THEN '30'
WHEN 32 THEN '32'
WHEN 38 THEN '38'
WHEN 45 THEN '45'
WHEN 60 THEN '60'
WHEN 80 THEN '80'
WHEN 90 THEN '90'
WHEN 100 THEN '100'
WHEN 105 THEN '105'
WHEN 150 THEN '150'
WHEN 180 THEN '180'
WHEN 225 THEN '225'
WHEN 360 THEN '360'
WHEN 375 THEN '375'
WHEN 390 THEN '390'
WHEN 400 THEN '400'
WHEN 405 THEN '405'
WHEN 418 THEN '418'
WHEN 420 THEN '420'
WHEN 450 THEN '450'
WHEN 480 THEN '480'
WHEN 495 THEN '495'
WHEN 540 THEN '540'
WHEN 550 THEN '550'
WHEN 600 THEN '600'
WHEN 615 THEN '615'
WHEN 1728 THEN '1728'
WHEN 1920 THEN '1920'
WHEN 2000 THEN '2000'
WHEN 2412 THEN '2412'
WHEN 2420 THEN '2420'
WHEN 2628 THEN '2628'
WHEN 2800 THEN '2800'
WHEN 2824 THEN '2824'
WHEN 3020 THEN '3020'
WHEN 3098 THEN '3098'
WHEN 3120 THEN '3120'
WHEN 3190 THEN '3190'
WHEN 3212 THEN '3212'
WHEN 3224 THEN '3224'
WHEN 3260 THEN '3260'
WHEN 3292 THEN '3292'
WHEN 3300 THEN '3300'
WHEN 3672 THEN '3672'
WHEN 4050 THEN '4050'
WHEN 9999 THEN '9999'
END
)
FROM D5ECurso cur
INNER JOIN D5ETurma t ON t.cd_curso = cur.cd_curso
INNER JOIN D5EAluno a ON a.cd_turma = t.cd_turma
WHERE a.cd_aluno = $cod_aluno
SELECT TOP 1
UPPER(@mensagem) AS quantidade_horas
Como posso melhorar este código?
Agradeço desde já a ajuda.
Discussão (2)
Carregando comentários...