Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo oracle

Consulta para ver o conteúdo de um pacote (Oracle)

Existem ocasiões onde não temos a disposição uma ferramenta para ver o conteúdo de nossos pacotes, mas existe a necessidade de se consultar o que esta desenvolvido, logo para situações como essa podemos executar uma consulta com essa finalidade: select text   from all_source a  where a.type = 'PACKAGE BODY'    and a.name = 'NOME_DO_MEU_PACOTE'   order by line

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

Loop com execute immediate (Oracle)

A pouco tempo atrás me peguei imaginando como percorrer um conjunto de dados gerado por uma consulta a ser construida. Bom para executar uma consulta nesse formato usamos o “ EXECUTE IMMEDIATE ”, até ai sem novidades, mas e o loop? Para resolver isso executamos a consulta, colocamos o resultado em uma coleção ( BULK COLLECT ) e realizamos loop nessa coleção, simples não?  Agora vamos ao código:     CREATE OR REPLACE PROCEDURE PRC_EXECIMMEDIATE AS   TYPE ItemRec IS RECORD (      item_id NUMBER,     dup_cnt NUMBER);   TYPE ItemSet IS TABLE OF ItemRec;   dup_items ItemSet; BEGIN   EXECUTE IMMEDIATE     ' SELECT deptno, COUNT(DISTINCT ename) dup_cnt ' ||     '   FROM emp ' ||     '  GROUP BY deptno ' ||     ' HAVING COUNT(DISTINCT ename) > 1'     BULK COLLECT     INTO dup_items;   FOR i IN dup_items.FIRST..dup_items.LAST   LOOP     dbms_output.put_line( dup_items(i).item_id );     -- processamento aqui   END LOOP; END PRC_EXECIMMEDIATE;

O que devemos conhecer sobre SQL/Oracle Parte 18: Controlando o acesso dos usuários

Diferenciando privilégios de sistema de privilégios de objetos Existem três categorias gerais para agrupar privilégios, que são: Privilégios de sistema: habilidade de realizar tarefas especificas no banco de dados, como por exemplo, logar ou criar uma tabela; Privilégios de objeto: habilidade de realizar tarefas em um determinado objeto do banco de dados; Regra (role): coleção de um ou mais privilégios de sistema e/ou privilégios de objeto, e/ou outras regras; O que devemos ter em mente é o seguinte, privilégios de sistema é o que precisamos para criar objetos do banco de dados, por exemplo, o direito de criar uma tabela é um privilégio de sistema e a habilidade de alterar registros dessa tabela é um privilégio de objeto. A seguir uma tabela com alguns dos privilégios de sistema: Privilégios de sistema Privilégio Descrição CREATE SESSION Conectar a base. CREATE TABLE Criar uma tabela na conta do usuário, i

O que devemos conhecer sobre SQL/Oracle Parte 17: Suporte a expressões regulares

Utilizando metacharacters Expressões regulares são utilizadas por varias linguagens de programação e em diversos sistemas operacionais, e o Oracle não é exceção, ele oferece esse poderoso recurso em sua linguagem. São formadas por diversos símbolos e códigos conhecidos como metacharacters , e são utilizados para buscar partes de um determinado texto. A seguir veremos três quadros com os operadores, classes POSIX e intervalos de caracteres: Operadores das expressões regulares Operador Descrição ( ) Trata a expressão ou o conjunto de literais como uma subexpressão. [...] O par de colchetes delimita uma lista de uma ou mais expressões: combinações de elementos, símbolos, classes equivalentes, classes de caractere ou expressões de dimensão. [^...] Uma expressão de não igualdade. Indica que a lista de expressões dentro dos colchetes não deve ser encontrada. [. ...] O uso do ponto especifica