INTRODUÇÃO AO PL/SQL

Atualizado: 11 de set. de 2021

A linguagem PL/SQL é uma extensão da linguagem SQL com recursos de design de linguagens de programação. As instruções de consulta e a manipulação de dados em SQL estão incluídas nas unidades procedurais de código.


PL/SQL significa “Procedural Language extensions to the Structured Query Language" que em português significa "Extensões da Linguagem Procedural para a Linguagem de Consulta Estruturada”. SQL é uma linguagem popular para consulta e atualização de dados nos sistemas de gerenciamento de banco de dados relacional (RDBMS). > PL/SQL adiciona muitas construções procedurais à linguagem SQL para superar algumas limitações do SQL. Além disso, a PL/SQL fornece uma solução de linguagem de programação mais abrangente para a construção de aplicativos de missão crítica em bancos de dados Oracle.


> PL/SQL é uma linguagem altamente estruturada e legível. Suas construções expressam a intenção do código claramente. Além disso, PL/SQL é uma linguagem simples de aprender.


> PL/SQL é uma linguagem padrão e portátil para desenvolvimento de banco de dados Oracle. Se você desenvolver um programa que é executado em um banco de dados Oracle, poderá movê-lo rapidamente para outro banco de dados Oracle compatível sem nenhuma alteração.


> PL/SQL é uma linguagem embutida. e só pode ser executado em um banco de dados Oracle. Ele não foi projetado para ser usado como uma linguagem autônoma como Java, C # e C ++. Em outras palavras, você não pode desenvolver um programa PL/SQL que seja executado em um sistema que não tenha um banco de dados Oracle.


> PL/SQL é uma linguagem de banco de dados de alto desempenho e altamente integrada. Além de PL/SQL, você pode usar outras linguagens de programação, como Java, C # e C ++. No entanto, é mais fácil escrever código eficiente em PL/SQL do que em outras linguagens de programação quando se trata de interagir com o banco de dados Oracle. Em particular, você pode usar construções específicas de PL/SQL como a instrução FORALL que ajuda a melhorar o desempenho do banco de dados.


O mecanismo PL/SQL é responsável por compilar o código PL/SQL em código de bytes e executar o código executável. O mecanismo PL/SQL só pode ser instalado em um servidor de banco de dados Oracle ou em uma ferramenta de desenvolvimento de aplicativos como por exemplo, o Oracle Forms.

Depois de enviar um bloco PL/SQL ao servidor de banco de dados Oracle, o mecanismo PL/SQL colabora com o mecanismo SQL para compilar e executar o código. O mecanismo PL/SQL executa os elementos procedurais enquanto o mecanismo SQL processa as instruções SQL.

Bloco anônimo PL/SQL

PL/SQL é uma linguagem estruturada em blocos. Um bloco PL/SQL consiste em três seções:

- declaração

- executável

- tratamento de exceções.

Em um bloco, a seção executável é obrigatória, enquanto as seções de declaração e tratamento de exceções são opcionais.


Um bloco PL/SQL tem um nome. Functions ou Procedures são exemplos de um bloco nomeado. Um bloco nomeado é armazenado no servidor de banco de dados Oracle e pode ser reutilizado posteriormente.


Um bloco sem nome é um bloco anônimo e ele não é alocado no servidor de banco de dados Oracle, portanto, é apenas para uso único. No entanto, os blocos anônimos PL/SQL podem ser muito úteis para fins de teste.


A imagem a seguir ilustra a estrutura de um bloco PL/SQL:

Seção de declaração

Um bloco PL/SQL tem uma seção de declaração onde você declara variáveis, aloca memória para cursores e define tipos de dados.


Seção executável

Uma seção executável começa com a palavra-chave BEGIN e termina com a palavra-chave END. A seção executável deve ter pelo menos uma instrução executável, mesmo se for a instrução NULL que não faz nada.


Seção de tratamento de exceções

Um bloco PL/SQL possui uma seção de tratamento de exceções que começa com a palavra-chave EXCEPTION. A seção de tratamento de exceções é onde você captura e trata as exceções levantadas pelo código na seção de execução.


Observe que o próprio bloco é uma instrução executável, portanto, você pode aninhar um bloco dentro de outros blocos.


Exemplos

DECLARE 
    v_message VARCHAR2(255) := 'Hello World!'; 
BEGIN   
    DBMS_OUTPUT.PUT_LINE(v_message); 
END;

Isso te traz o resultado:

Hello World!

O próximo exemplo de bloco anônimo adiciona uma seção de tratamento de exceção que captura a exceção ZERO_DIVIDE gerada na seção executável e exibe uma mensagem de erro.

DECLARE       
    v_result NUMBER;
BEGIN    
    v_result := 1 / 0;    
    EXCEPTION       
        WHEN ZERO_DIVIDE THEN          
            DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;

A mensagem de erro é:

ORA-01476: divisor is equal to zero

Melhoria de desempenho


Problemas com aplicações de baixa performance podem estar freqüentemente relacionados a consultas SQL mal estruturadas ou a um design de banco de dados ineficiente.

A metodologia e tuning da Oracle, tradicionalmente é focada no design da aplicação e no tuning de consultas SQL antes mesmo de analisar quaisquer tipos de problemas relacionados à configuração do banco de dados.

A otimização de uma consulta constitui em determinar a melhor estratégia para executá-la no banco de dados. O otimizador do Oracle escolhe, por exemplo, se usará um índice ou não para uma consulta especifica e que técnicas de JOIN usar na junção de múltiplas tabelas.


Estas decisões têm um impacto muito grande na performance de um SQL e por isso a otimização de uma consulta é essencial para qualquer aplicação e de extrema importância para a performance de um banco de dados relacional. E faz parte da lista de tasks e habilidades de um DBA.

É muito importante que os desenvolvedores conheçam o otimizador do Oracle como também os conceitos relativos à tuning. Tal conhecimento irá ajudar a escrever consultas muito mais eficientes e rápidas.


Caracteres Especiais


Assim como palavras reservadas, a linguagem também tem carácteres reservadas e especiais.


Símbolo Caracteres

; Ponto e vírgula: fim de comando

% Percentagem: indicador de atributo

: Dois pontos: indicador de variável host