plsql oracle

36
PL/SQL Oracle

Upload: pablo-garcia

Post on 25-May-2015

769 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: plsql oracle

PL/SQLOracle

Page 2: plsql oracle

PL/SQL

PL/SQL significa "Procedural Language extensions to SQL“

PL/SQL é uma extensão da linguagem procedural do SQL

É uma combinação de SQL, juntamente com as características das linguagens de programação procedurais.

Page 3: plsql oracle

PL/SQL

Foi desenvolvido pela Oracle Corporation no início dos anos 90 para melhorar as capacidades do SQL.

O PL/SQL pode ser usado em bancos de dados Oracle, no Oracle Server, em ferramentas clientes, isto é, Oracle Forms.

Page 4: plsql oracle

A história do PL/SQL

Antes de 1991 a única forma de usar construções procedureis com o SQL era usar PRO*C. Foi onde as instruções SQL do Oracle foram embutidas em código C. O código C era pré-compilado para converter as instruções SQL em chamadas de bibliotecas.

Page 5: plsql oracle

A história do PL/SQL

Em 1991 o PL/SQL 1.0 foi lançado com o Oracle Versão 6.0. Ele era muito limitado nas suas capacidades.

O PL/SQL Versão 2.0 foi lançado com o Oracle Versão 7.0. Esta era uma atualização maior. Ele suportava stored packages, procedures, funções, tabelas PL/SQL, registros definidos pelo programador e package extensions.

Page 6: plsql oracle

A história do PL/SQL

O PL/SQL Versão 2.1 foi liberado com a Versão 7.1 do Oracle. Isto permitiu o uso de stored functions dentro de instruções SQL e a criação de SQL dinâmico pelo uso do pacote DBMS_SQL. Foi também possível executar instruções de Linguagens de Definição de Dados de programas PL/SQL.

Page 7: plsql oracle

A história do PL/SQL

A Versão 2.2 PL/SQL foi lançada com a Versão 7.2 do Oracle. Ele implementava um envólucro para programas PL/SQL para proteger o código de olhares curiosos. Também foi possível agendar trabalhos do banco de dados com o pacote DBMS_JOB.

Page 8: plsql oracle

A história do PL/SQL

A Versão 2.3 do PL/SQL foi lançado com a Versão 7.3 do Oracle. Esta versão aumentou as capacidades das tabelas PL/SQL e adicionou funcionalidades de E/S de arquivos.

Page 9: plsql oracle

A história do PL/SQL

A Versão 2.4 do PL/SQL foi liberada com a Versão 8.0 do Oracle. Esta versão suporta os melhoramentos do Oracle 8, incluindo Large Objects, projeto orientado a objetos, tabelas aninhadas e Oracle advanced queuing.

Page 10: plsql oracle

O Mecanismo de PL/SQL Oracle usa um engine de PL/SQL para

processar as instruções PL/SQL. Um código de PL/SQL pode ser armazenado no sistema do cliente (client-side) ou no banco de dados (server-side).

Page 11: plsql oracle

O Mecanismo de PL/SQL O conjunto de caracteres do PL/SQL

Programas PL/SQL consistem dos seguintes caracteres, as letras A- Z, a- z, os números 0 - 9, os símbolos ~!@#$%&*()[]{};:'"<>,.?/.

O PL/SQL é caso insensitivo, letras maiúsculas e letras minúsculas são equivalentes.

Page 12: plsql oracle

Um bloco PL/SQL Simples Cada programa PL/SQL consiste em

instruções SQL e PL/SQL, a partir de um bloco PL/SQL.

Um bloco PL/SQL consiste em três seções:

A seção de Declaração (opcional). A seção de Execução (obrigatório). A exceção (ou erro) seção de Handling

(opcional).

Page 13: plsql oracle

Seção declaração

A seção Declaração de um Bloco PL/SQL começa com a palavra-chave reservada DECLARE.

Esta seção é opcional e é usada para declarar os espaços reservados como variáveis, constantes, registros e cursores, que são usadas para manipular dados na seção de execução.

Page 14: plsql oracle

Seção declaração

Podem ser quaisquer variáveis, constantes e registros, que armazenam dados temporariamente. Cursores são também são declarados nesta seção.

Page 15: plsql oracle

Seção de Execução

A seção de execução de um bloco PL/SQL começa com a palavra-chave reservada BEGIN e termina com END.

Esta é uma seção obrigatória e é a seção onde a lógica do programa é escrita para realizar qualquer tarefa.

As construções de programação como loops, instrução condicional e instruções SQL formam a parte da seção de execução.

Page 16: plsql oracle

Seção exceção

A seção de exceção de um Bloco PL/SQL começa com a palavra-chave reservada EXCEPTION.

Esta seção é opcional e qualquer erro no programa pode ser tratado nesta seção, de modo que os blocos PL/SQL terminam com sucesso.

Page 17: plsql oracle

Seção exceção

Se o bloco PL/SQL contém exceções que não podem ser tratadas, o bloco termina abruptamente com erros.

Page 18: plsql oracle

PL/SQL

Cada declaração deve terminar com um ponto e vírgula ;

Blocos PL/SQL podem ser aninhados dentro de outros blocos PL/SQL. Os comentários podem ser usadas para documentar código.

Page 19: plsql oracle

PL/SQL

PL/SQL é a forma mais rápida de processar dados em Bancos de Dados Oracle. Entenda “processar dados” como não apenas submeter instruções SQL (UPDATE, SELECT, INSERT e DELETE) para o banco, mas sim, efetuar transações que consistem de várias estruturas de decisão, loops e outros tipos de processamento.

Page 20: plsql oracle

Comentando o nosso código Todo bom código PL/SQL merece ser

comentado.  Temos duas maneiras de comentar

código. Podemos usar o duplo '-' para comentar uma única linha de código. Tudo depois de -- é ignorado até o fim da linha.

Page 21: plsql oracle

Comentando o nosso código Por exemplo:

-- Função que calcula comissão de vendas IF sales > 0 THEN commission := sales * 0.1; END IF;

Podemos também colocar nosso comentário em uma linha que contém código a ser executado.

Por exemplo:

IF sales > 0 THEN commission := sales * 0.1; -- A % da comissão é de 10 porcento.

END IF;

Page 22: plsql oracle

Comentando o nosso código Agora quando queremos comentar múltiplas linhas

dentro do PL/SQL podemos usar os seguintes caracteres /* */. Tudo entre esses caracteres é ignorado e tratado como um comentário.

Por exemplo:

PROCEDURE update_balance (cust_id IN NUMBER) IS /* Procedure: update_balance Autor: José Silva Descrição: Procedure de Teste */

Page 23: plsql oracle

Palavras reservadas

O PL/SQL possui palavras reservadas, não é uma boa idéia tentar usar uma palavra reservada como uma variável em seu código.

Aqui estão algumas das palavras reservadas em PL/SQL mas não é a lista definitiva, verifique sua documentação atual para a lista completa. 

Page 24: plsql oracle

Palavras reservadas

BEGIN END IF ELSE END IF WHILE LOOP OPEN, CLOSE, FETCH

Page 25: plsql oracle

Formatando o PL/SQL

Existe apenas um objetivo do layout eficaz de seu código PL/SQL e é 'Revelar e reforçar a estrutura lógica do programa'. PL/SQL beneficia-se por ser uma linguagem bem estruturada, cada bloco de código tem um começo e um fim bem definidos.

Page 26: plsql oracle

Formatando o PL/SQL

Por exemplo: IF - END IF LOOP - END LOOP DO - WHILE

Page 27: plsql oracle

Criando uma estrutura lógica Criar nossa estrutura lógica no PL/SQL

é bastante simples, fazemos isso usando endentação eficaz do nosso código. Aqui está um pedaço de código não-endentado.

Page 28: plsql oracle

Criando uma estrutura lógica IF sal > 20000 THEN comm := sal * 0.1; ELSIF sal > 10000 and sal <20000

THEN comm := sal * 0.06; ELSE comm := 0; END IF;

Page 29: plsql oracle

Criando uma estrutura lógica No trecho de código anterior é difícil

determinar quais instruções vão em dada instrução IF. Se endentarmos cada bloco lógico do código com dois espaços (algumas pessoas preferem três) o código torna-se mais legível e compreensível.

Page 30: plsql oracle

Exemplo de um bloco PL/SQL

Page 31: plsql oracle

Examinando alguns exemplos Criando código PL/SQL O Código abaixo mostra como criar o

codigo PL/SQL.

( PenDrive )

Page 32: plsql oracle

Examinando alguns exemplos Criando um procedimento O código abaixo mostra como criar um

procedimento.

(PenDrive)

Page 33: plsql oracle

Examinando alguns exemplos Criando uma função O código abaixo mostra como criar uma

função.

(PenDrive)

Page 34: plsql oracle

Examinando alguns exemplos Executando a função get _cust_

name a partir da SQL O código abaixo mostra como executar

a função GET_CUST_NAME.

(PenDrive)

Page 35: plsql oracle

Examinando alguns exemplos Criando um pacote O código abaixo mostra como criar um

pacote.

(PenDrive)

Page 36: plsql oracle

Examinando alguns exemplos Usando PL/SQL em um gatilho de

banco de dados O código abaixo mostra como usar a

PL/SQL em um gatilho de banco de dados.

(PenDrive)