Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo consulta

Verificar privilégios de um usuário (Oracle)

Em muitas ocasiões, por diferentes motivos nos deparamos com a necessidade de conhecer os privilégios que um determinado usuário possui. Como vimos aqui existem alguns tipos diferentes de privilégios e para consultar esses privilégios temos a disposição o famoso dicionário de dados, conforme visto aqui , sendo nos objetos desse dicionário que precisaremos consultar para obter informações sobre os privilégios. O objetivo desse post não é entrar em detalhes sobre os privilégios ou mesmo sobre as tabelas que formam o dicionário de dados, isso já foi feito nas postagens mencionadas, a intenção é mostrar uma consulta que nos permita obter os principais privilégios, segue o código: select 'Privilégios de sistema : ' || PRIVILEGE from dba_sys_privs where GRANTEE = upper('PROGRAMERO') union select 'Privilégios em Role: ' || GRANTED_ROLE from dba_role_privs where GRANTEE = upper('PROGRAMERO') union select 'Privilégios em objetos : ' || owne

Funções de data Oracle

  Com o Oracle é possível obter uma série de resultados a partir de uma ou mais datas, como por exemplo verificar o último dia do mês ou verificar a quantidade de meses entre duas datas, então vamos a alguns exemplos:   Data atual do sistema: SYSDATE Remover meses de uma data: ADD_MONTHS(SYSDATE, -1) Adicionar meses de uma data: ADD_MONTHS(SYSDATE, +1) Buscar o último dia do mês: LAST_DAY(SYSDATE) Primeiro dia do mês: TRUNC(SYSDATE, ‘MONTH’) Quantidade de meses entre duas datas: MONTHS_BETWEEN(SYSDATE, ‘27/07/1982’) Primeiro dia do ano: TRUNC(SYSDATE, ‘YEAR’) Dias da semana: DECODE( TO_NUMBER( TO_CHAR          (SYSDATE, ‘D’) ) ,1, ‘domingo’ ,2, ‘segunda-feira’ ,3, ‘terça-feira’ ,4, ‘quarta-feira’ ,5, ‘quinta-feira’ ,6, ‘sexta-feira’ ,7,’sábado’ )

Consulta Top-N SQL Server

Esse tipo de consulta é útil em situações onde precisamos encontrar, por exemplo, os N maiores ou menores dentro de determinado grupo, os funcionários mais bem pagos, os que vendem mais, as mercadorias menos vendidas e assim por diante. No SQL Server utilizamos o predicado TOP para recuperar um determinado número de registros e ordenamos a consulta com o ORDER BY. Baixe aqui o script com a criação da tabela e os inserts para o teste. No exemplo abaixo desejamos encontrar os três funcionários que ganham mais: SELECT TOP 3 NOM_FUNC NOME, SAL_FUNC SALARIO FROM FUNCIONARIOS ORDER BY SAL_FUNC DESC Agora desejamos encontrar os três funcionários que possuem os menores salários: SELECT TOP 3 NOM_FUNC NOME, SAL_FUNC SALARIO FROM FUNCIONARIOS ORDER BY SAL_FUNC Podemos perceber que ambos os códigos são idênticos, precisamos apenas mudar a ordem na cláusula ORDER BY.

Consulta Top-N Oracle

Esse tipo de consulta é útil em situações onde precisamos encontrar, por exemplo, os N maiores ou menores dentro de determinado grupo, os funcionários mais bem pagos, os que vendem mais, as mercadorias menos vendidas e assim por diante. Para conseguirmos isso no Oracle precisaremos implementar uma consulta interna (ou view em linha), que irá retornar todos os registros necessários, e na consulta externa iremos limitar a exibição num total desejado. Baixe aqui o script com a criação da tabela e os inserts para o teste. No exemplo abaixo desejamos encontrar os três funcionários que ganham mais: SELECT NOME, SALARIO FROM ( SELECT FU.NOM_FUNC NOME, FU.SAL_FUNC SALARIO FROM FUNCIONARIOS FU ORDER BY FU.SAL_FUNC DESC ) WHERE ROWNUM <= 3 Agora desejamos encontrar os três funcionários que possuem os menores salários: SELECT NOME, SALARIO FROM ( SELECT FU.NOM_FUNC NOME, FU.SAL_FUNC SALARIO FROM FUNCIONARIOS FU ORDER BY FU.SAL_FUNC ) WHERE ROWNUM <= 3 P