1. O que é PL/SQL?

A linguagem PL/SQL (Procedural Language extensions to SQL) foi introduzida no ano de 1988 como parte do conjunto de tecnologias que compunha a versão 6.0 do SGBD Oracle. Ela possibilita o desenvolvimento de programas que são armazenados, compilados e executados dentro do servidor de banco de dados Oracle. É tipicamente utilizada para a criação de aplicações de missão crítica, que requerem alto desempenho na execução de suas tarefas.

2. Quando usar PL/SQL?

Se a sua empresa trabalha com o SGBD Oracle, a principal vantagem de você criar programas em PL/SQL é, sem dúvida, o fato de a linguagem tornar possível a construção de aplicações eficientes para a manipulação grandes volumes de dados (tabelas com milhões ou bilhões de registros). Como o programa PL/SQL é executado dentro do Oracle, os dados manipulados não precisam entrar ou sair do SGBD, ou seja, trafegar pela rede. A eficiência da PL/SQL também é garantida através da sua forte integração com a linguagem SQL no ambiente Oracle. É possível executar comandos SQL diretamente de um programa PL/SQL, sem a necessidade da utilização de API's intermediárias (como ODBC ou JDBC).

Como uma segunda característica muito positiva, pode-se dizer que a PL/SQL é significativamente mais confiável do que a maioria das outras linguagens de programação. Normalmente, um programa escrito em PL/SQL apresentará um comportamento previsível durante a sua execução. Ele rodará com o desempenho esperado pelo programador e sem a ocorrência de “bugs inexplicáveis” tão comuns nos dias de hoje.

O terceiro aspecto positivo é o “tempo de vida” dos programas PL/SQL. Um código escrito em PL/SQL costuma ser mais durável, no sentido de que não precisa sofrer manutenção mesmo quando a versão do SGBD é atualizada (ex: mudança da versão Oracle 10g no Windows para Oracle 11g no Linux). É comum encontrar programas PL/SQL que foram escritos há 10 ou mais anos em operação nas empresas. Isto ocorre porque as diferentes versões do PL/SQL são, na maioria dos aspectos, compatíveis.

3. Qual a diferença entre SQL e PL/SQL?

Uma dúvida frequente entre os iniciantes no mundo Oracle é a seguinte: “afinal de contas, qual a diferença entre SQL e PL/SQL?”. A resposta não é difícil. Como o seu próprio nome revela, a PL/SQL (Procedural Language extensions to SQL) consiste em uma extensão da linguagem SQL (Structured Query Language). As características-chave das duas linguagens são descritas a seguir.

SQL

SQL é a linguagem padrão ANSI para a manipulação de bancos de dados relacionais. Por ser um padrão aceito pela indústria, é suportada por todos os SGBD's relacionais - o que inclui produtos como Oracle, Microsoft SQL Server, MySQL, PostgreSQL, SQLite e IBM DB2.

Embora seja uma linguagem muito poderosa, o escopo da SQL é claro é direto: oferecer instruções para a recuperação e manipulação de dados em tabelas, controle de transações, definição de objetos e controle de acesso. A tabela abaixo apresenta as principais instruções SQL e suas respectivas funções.

Tabela 1: Instruções SQL

INSTRUÇÃO FUNÇÃO
SELECT Recuperação de dados.
INSERT UPDATE DELETE Manipulação de dados.
CREATE ALTER DROP RENAME TRUNCATE Definição de objetos.
COMMIT ROLLBACK SAVEPOINT Controle de transações.
GRANT REVOKE Controle de acesso.

A SQL possui a limitação de ser uma linguagem declarativa. Isto significa que não é possível criar um programa inteiro em SQL, pois a linguagem não possui comandos para tomada de decisão (ex: IF-ELSE) e nem para execução de laços (ex: WHILE e FOR).

PL/SQL

A PL/SQL pode ser entendida como uma extensão da linguagem SQL, adicionada de funcionalidades que a tornam uma linguagem de programação completa: controle de fluxo, tratamento de exceções, orientação a objetos, entre outras. Com a PL/SQL podemos escrever programas inteiros, desde os mais simples até os mais sofisticados. A linguagem foi criada exatamente com o propósito de oferecer uma solução de programação para os usuários que precisavam escrever aplicações de missão crítica executadas no SGBD Oracle.

No entanto, é importante deixar claro que a PL/SQL não foi criada para ser uma linguagem padrão e nem independente! Ao contrário disso, é uma tecnologia exclusiva Oracle, uma linguagem proprietária que pode ser utilizada apenas nos produtos desta empresa. Mas apesar de ser “somente” a “linguagem do banco de dados Oracle” - e não uma linguagem de propósito geral, como Java ou C - a PL/SQL se tornou extremamente difundida ao longo dos anos, possuindo uma enorme comunidade de usuários. Cada nova versão do SGBD Oracle traz embutida uma versão correspondente da PL/SQL incrementada com uma série de novos comandos e funcionalidades.

O quadro mostrado na tabela abaixo apresenta um resumo das diferenças entre SQL e PL/SQL.

Tabela 2: Diferenças entre as Linguagens SQL e PL/SQL

SQL PL/SQL
Linguagem declarativa. Não é possível criar programas inteiros em SQL. Linguagem imperativa. Possibilita a criação de programas completos.
Linguagem padrão ANSI. Pode ser usada em qualquer SGBD relacional. Linguagem proprietária. Utilizada apenas pelo SGBD Oracle.

Finalizamos assim este artigo, no qual foi apresentada a linguagem PL/SQL, fazendo uma breve comparação com a SQL tradicional.