Usuário com melhor resposta
Choose com Month

Pergunta
-
Boa tarde.
Estou aprendendo SQL, ainda sou novato e não tenho os conceitos bem firmados sobre várias funções.
Eu preciso criar uma função que receba uma data como parâmetro e que retorne o nome do mês dessa data em português.
Sei que para isso pode ser utilizado o CHOOSE, alguém poderia apontar o que está errado no código abaixo?
Neste momento eu não gostaria de resolver com outra opção e sim com o CHOOSE para que eu possa entender melhor sua aplicação. Procurei vários exemplos na internet mas não consegui aplicar de maneira que funcionasse, não sei onde realmente está errado, se alguém puder me ajudar agradeço.
---MS SQL 2014
---Código:
CREATE FUNCTION FN_NOME_MES_CHOOSE (@DT DATETIME)
RETURNS VARCHAR(15)
AS BEGIN
SELECT CHOOSE(MONTH (@DT),'JAN','FEV','MAR','ABR','MAI','JUN','AG','SET','OUT','NOV','DEZ')
END--Mensagem de erro
Mensagem 444, Nível 16, Estado 3, Procedimento FN_NOME_MES_CHOOSE, Linha 57
As instruções de seleção incluídas em uma função não podem retornar dados a um cliente.
Mensagem 455, Nível 16, Estado 2, Procedimento FN_NOME_MES_CHOOSE, Linha 57
A última instrução incluída em uma função deve ser uma instrução de retorno.
Respostas
-
Deleted
- Marcado como Resposta Guilherme Macedo S quarta-feira, 31 de maio de 2017 18:20
Todas as Respostas
-
Boa tarde,
Acho que o erro não está no uso da função Choose em si, acho que está faltando adicionar o comando Return para que a sua função retorne o valor do Choose:
RETURN (SELECT CHOOSE(MONTH (@DT),'JAN','FEV','MAR','ABR','MAI','JUN','AG','SET','OUT','NOV','DEZ'))
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Mailson Santana terça-feira, 30 de maio de 2017 19:04
-
Boa tarde, eabueno!
Caso a versão do SQL que você estiver usando for 2012 ou superior você também tem a opção de utilizar a função Format:
Declare @Data DateTime = '20160701' Select Upper(Format(@Data, 'MMM', 'pt-br')) ,Format(@Data, 'MMMM', 'pt-br')
--Returno: JUL julho
-
Deleted
- Marcado como Resposta Guilherme Macedo S quarta-feira, 31 de maio de 2017 18:20