quarta-feira, 9 de dezembro de 2015

Blocos de Execução Anômimos







O PL/SQL permite trabalhar com blocos de execução anônimos e  Subprogramas, nesse post vamos falar sobre a utilização do bloco anônimo.

Sua estrutura é composta por:




  • Declare: Parte do código especifica para declaração das variáveis,cursores e funções internas do código.
  • Seção de Execução: parte do código que pode conter estruturas interativas ou condicionais, definição de variáveis, chamadas para blocos nomeados, é definido por: 
    • Begin: Define o inicio dos comandos PL/SQL, podem existir vários no bloco
    • End: Obrigatório para encerramento do bloco de execução, deve existir 1 para cada Begin.
  • Exception: Tratamento para erros em tempo de execução, sua utilização é opcional.  


É possível encadear varias seções de execução dentro de um bloco de execução, inclusive pode-se criar dentro de estruturas interativas ou condicionais da seção principal. Falando de forma mais objetiva podemos criar a estrutura Begin - End dentro de um Loop ou um IF.


Dominar o conceito de Blocos de execução é fundamental para aprender a programar em PL/SQL, essa é a base de todo o conhecimento desta linguagem, por isso fiquem à vontade para fazer perguntas aqui nos comentários!

segunda-feira, 9 de novembro de 2015

PL/SQL x SQL

Mais um post sobre diferenças de termos normalmente utilizados pelos profissionais de TI, de forma errada.

Já tem um tempinho fiz um post sobre a Definição de PL/SQL, agora vou abordar mais a diferença entre SQL e PL/SQL.


  • SQL: Structured Query Language(Linguagem de Consulta Estruturada ) - é a linguagem de manipulação de dados para banco de dados relacionais,  criada pela IBM na década de 70 baseada em conceitos da Álgebra relacional . Foi desenvolvida para padronização dos sistemas gerenciadores de banco de dados relacionais existentes. Seus comandos podem ser agrupado na seguintes categorias (DDL, DCL, DML, DQL).

  • PL/SQL: Procedural Language/Structured Query Language - é a linguagem própria de programação do SGBD Oracle, é uma ferramenta robusta, podendo ser utilizada de várias formas para tratamento de dados no banco de dados. O PL/SQL possibilita a aplicação de regras de negocio diretamente no SGB.

Principais Diferenças

Podemos dizer que enquanto o SQL é uma linguagem de consulta universal dos SGBDs relacionais o PL/SQL é uma linguagem de programação desenvolvida exclusivamente para o SGBD Oracle.

Para identificar se você esta utilizando o PL/SQL ou apenas o SQL em um acesso ao banco de dados é importante observar se é feita a declaração de variáveis ou se o seu código esta utilizando conceitos de programação ( If, else, Loop entre outros) e se o seu código esta dentro de um bloco de execução.

Normalmente o PL/SQL é utilizado dentro de blocos de execução armazenados no SGBD (Procedures, Functions, Triggers e Packages) em alguns casos pode ser utilizado através de blocos anônimos, é importante lembrar que comandos de SQL podem ser utilizados dentro do PL/SQL, porém o inverso não é valido, ou seja caso você tente executar uma função PL/SQL fora de um bloco de execução o SGBD oracle não vai reconhecer a instrução apresentando o erro "ora-00905 missing keyword".

Bloco Anônimo

quarta-feira, 12 de agosto de 2015

Banco de dados X SGBD

Nesse post vou tratar de um tema aparentemente simples mas que muitos se confundem em relação termos utilizados no universo de sistemas de banco de dados, vou falar sobre as diferenças entre banco de dado e SGBD.

Banco de dados

Um banco de dados é uma representação abstrata de um Mini-Mundo ou Universo de Discurso, ou seja, uma coleção de dados logicamente coerentes que juntos possam gerar informações.

Para abstrair um pouco de universo da informatica uma agenda telefônica, aquele modelo antigo de papel, pode ser considerado um banco de dados onde as informações gravadas são relacionadas ao Mini-mundo de pessoas que o dono da agenda conhece, esta situação o caderninho com folhas marcando o Alfabeto seria o SGBD.

Neste caso a agenda pode ser qualquer lugar onde você anota o nome da pessoa e seu telefone, já o SGBD seria o sistema de ordenação desses dados.

SGBD - Sistema de Gerenciamento de Banco de dados

O SGBD é um sistema desenvolvido para facilitar o armazenamento e a manipulação de dados no banco de dados, todo SGBD possui um banco de meta-dados que armazena as informações sobre o banco de dados. Voltando para o exemplo anterior o caderno com as letras do alfabeto simplifica o armazenamento e a consulta dos dados, inclusive já cria um índice para consulta.

Apesar de ser comum ouvir as pessoas dizerem que trabalham com banco Oracle, SQL Server ou MySql é preciso lembrar que esses softwares são SGBDs logo o correto seria dizer que trabalham com SGBD Oracle, SGBD SQL Server ou SGBD MySql.

Veja aqui um pouco da historia de Larry Ellison fundador da CIA Oracle, proprietária SGBD homônimo.

Diferença

Como representado na imagem abaixo o SGBD é um software que administra o Banco de dados, desta forma você sempre vai acessar o banco de dados através de um SGBD.

Figura1: SGBD

quarta-feira, 29 de julho de 2015

Dicionário de dados Oracle


O dicionário de dados do SGBD Oracle  é um conjunto de tabelas e views, pertencentes ao usuário SYS com permissão apenas de leitura.
Essas tabelas armazenam informações sobre a estrutura do banco de dados como: nomes dos usuários do servidor Oracle, privilégios concedidos, os nomes de objetos do banco de dados, as constraints de tabelas e as informações de auditoria.

Existem quatro tipos de prefixos dessas tabelas, esses prefixos definem as características das informações que serão apresentados, são eles:

  • USER_: Informações dos objetos pertencentes ao usuário que estiver logado no banco.
  • ALL_: Informações dos objetos para os quais o usuário logado tem direitos de acesso e dos objetos pertencentes ao usuário.
  • DBA_: Informações dos usuários com privilégios de DBA para acessar qualquer objeto do banco de dados.
  • V$_: Informações sobre o desempenho ou bloqueio do servidor do banco de dados; disponível para os administradores do banco.


Para identificar as tabelas do dicionario é possível fazer uma busca na tabela dictionary, serão listadas apenas as tabelas que o usuário logado tem permissão de acesso.

Exemplo:
select * from dictionary
where table_name like 'V$%'

         Retorno:


O dicionário de dados permite obter informações do banco de dados auxiliando em analises para tuning de querys e melhorias na sua base de dados.

segunda-feira, 13 de julho de 2015

Guob Tech Day 2015.


No ano passado participei do Goub Tech Day 2014  por isso já estou me programando para Goub Tech Day 2015 que já está com as inscrições abertas e com programação disponível.

Estão com valores especiais para inscrições feitas ate 31/07.

O GUOB (Grupo de usuários Oracle) já programou mais uma edição de seu evento nacional no dia 08/08/2015 em São Paulo no Hotel Blue Tree Morumbi, o qual proporcionará um grande encontro de usuários de tecnologia Oracle do Brasil com a participação de palestrantes internacionais e nacionais.




Estarão presentes palestrantes como Alex Zaballa, Tim Hall, Francisco Alvarez, Alex Gorbachev, Kyle Hailey, Gustavo Gonzalez, Kerry Osborne,  Mike Dietrich,  Debra Liley, entre outros. Segue programação do evento
Disponível no site do evento em 13/07/2015

sábado, 4 de julho de 2015

Oracle Flashback


No post de hoje vamos falar sobre a tecnologia de Flashback que é uma tecnologia para recuperação logica d dados.

Essa ferramenta tem o objetivo de minimizar o impacto no caso de perda de dados ou de objetos do banco de dados,  contribuindo com a disponibilidade e reduzindo o tempo de serviço.

Existem 7 tipos de Flashback:

  • Flashback Query;
  • Flashback Version Query;
  • Flashback Transaction Query;
  • Flashback Data Archive;
  • Flashback Table;
  • Flashback Drop;
  • Flashback Database;

Para detalhar um pouco mais sobre esse tema disponibilizo aqui a apresentação realizada na Unicamp de Limeira em 04/07/2015 para a matéria de Políticas de Adm. de Banco de Dados Oracle no curso de Pós -Graduação de Engenharia e Adm. de Sistemas de Banco de Dados 6ª turma 2015-2016.

Apresentação Flashback





sábado, 23 de maio de 2015

Query Hierárquica


Nesse post vou falar sobre o conceito de Selects hierárquico é utilizado quando a tabela possui um relacionamento com ela mesma, Pai - Filho, esse comando é muito útil quando temos que construir arvores de informações a partir de uma unica tabela.


O recurso da query hierárquica só esta disponível a partir da versão 10G e possui as seguintes palavras chaves:

  • Level: Nível da linha dentro da arvore. 
  • Prior: Indica a coluna de hierarquia e qual o nível de inicio da consulta.
  • Start With: deve ser o inicio da hierarquia ( Pai)
  • Connect by: Define colunas de relacionamento (Pai e Filho)
O exemplo abaixo apresenta uma query hierárquica simples:

 SELECT EMPLOYEE_ID,E.FIRST_NAME || ' '|| E.LAST_NAME empregados,MANAGER_id
    FROM HR.EMPLOYEES e
   START WITH E.EMPLOYEE_ID = 100

  CONNECT BY PRIOR E.EMPLOYEE_ID = E.MANAGER_ID;

  O retorno da query acima será:

A ordenação do retorno desta query será é hierarquia entre empregados ( EMPLOYEE_ID e MANAGER_ID).



Obs: a base HR é padrão do Banco Oracle.

Copyright:

O Conteúdo desde Blog não deve ser publicado, distribuído ou transmitido sem autorização prévia de seu autor.

ESTE É UM SITE INDEPENDENTE E NÃO REPRESENTA A ORACLE CORPORATION® (http://www.oracle.com) EM NENHUM SENTIDO. AS OPINIÕES E CONTEÚDOS AQUI ENCONTRADOS NÃO POSSUEM RELAÇÃO COM A VISÃO DA ORACLE CORPORATION®. ESTE SITE NÃO POSSUI NENHUM APOIO OU PATROCINIO DA ORACLE CORPORATION®.