none
Choose com Month RRS feed

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

    terça-feira, 30 de maio de 2017 17:14

Respostas

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
    terça-feira, 30 de maio de 2017 17:22
  • 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

    terça-feira, 30 de maio de 2017 19:07
  • Deleted
    terça-feira, 30 de maio de 2017 20:05