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.