Considere uma tabela em uso chamada func, de um banco de da...
Para exibir o número do funcionário, a data de admissão e o número de meses entre a data de admissão e a data atual, utiliza- se a instrução PL/SQL
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - select FunNo, FDatAdm, MONTHS_BETWEEN(SYSDATE, FDatAdm) from func;
Para resolver essa questão é necessário entender o funcionamento da função MONTHS_BETWEEN no Oracle. Essa função é usada para calcular a diferença em meses entre duas datas. A sintaxe correta é MONTHS_BETWEEN(data1, data2), onde data1 é a data mais recente e data2 é a data mais antiga. O resultado será o número de meses que separam as duas datas.
O enunciado pede para calcular o número de meses entre a data de admissão do funcionário e a data atual. A função SYSDATE é usada para obter a data e hora atual do sistema no Oracle. Dessa forma, o primeiro argumento da função MONTHS_BETWEEN deve ser SYSDATE e o segundo argumento deve ser o campo FDatAdm, que contém a data de admissão do funcionário.
As instruções nas alternativas A, B, C e D estão incorretas, seja por usar uma função inexistente, seja por utilizar a função MONTHS_BETWEEN com argumentos errados ou de forma sintaticamente incorreta, como o uso de DATE() que não é uma função no Oracle, ou a utilização de um hífen ao invés de um sublinhado na função, ou ainda a referência a uma função denominada MONTHS que não existe no Oracle.
A alternativa E está correta porque utiliza a função MONTHS_BETWEEN com a sintaxe correta e os argumentos apropriados para o que foi solicitado no enunciado. A função calcula corretamente a diferença em meses entre a data atual do sistema (SYSDATE) e a data de admissão do funcionário armazenada no campo FDatAdm.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions089.htm
MONTHS_BETWEEN returns number of months between dates date1 and date2. If date1 is later than date2, then the result is positive. Ifdate1 is earlier than date2, then the result is negative. If date1 and date2 are either the same days of the month or both last days of months, then the result is always an integer. Otherwise Oracle Database calculates the fractional portion of the result based on a 31-day month and considers the difference in time components date1 and date2.
Examples
The following example calculates the months between two dates:
SELECT MONTHS_BETWEEN (TO_DATE('02-02-1995','MM-DD-YYYY'), TO_DATE('01-01-1995','MM-DD-YYYY') ) "Months" FROM DUAL; Months ---------- 1.03225806Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo