Introduction to 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.

PL/SQL é uma linguagem procedural e que herda as funcionalidades do SQL, podemos então utilizar todas as funções do SQL e PL/SQL juntos para implementar a regra de negócio.

Explain the need for PL/SQL

Basicamente, SQL é uma linguagem usada para definir e manipular dados [DDL e DML]. PL / SQL é uma linguagem criada pelo universo Oracle. O PL / SQL combina instruções processuais de programação e permite a criação de programas que operam diretamente no cenário do banco de dados.

Explain the benefits for PL/SQL

Imaginemos um cenário onde temos um sistema backend desktop e um sistema web, se fizermos a regra de negócio nos dois ambientes então a cada correção da regra de negócio deveremos ir nos dois ambientes e fazer a correção, esse retrabalho não irá acontecer se centralizarmos essa regra no banco. Agora imagina se tivermos 10 sistemas cada um implementando a regra de negócio, será que teremos consistência de dados? Ainda pior será a cada correção ter que atualizar a regra nos 10 ambientes.

Ao fazer a regra de negócio no banco de dados, todos sistemas que usam essa regra estarão sincronizados, exemplo: se temos uma procedure que faz um cálculo complexo para trazer um saldo então todas as chamadas a essa procedure estarão com o mesmo resultado o que nos traz consistência de dados, se caso precisarmos corrigir o cálculo do saldo então iremos apenas na procedure e corrigimos e todos os sistemas que fazem a chamada estarão com o valor atualizado não precisando mexer nada no sistema.

Outro cenário: temos um sistema em java desktop conectando no banco de dados oracle, se a regra de negócio estiver no banco de dados então podemos facilmente subir um sistema web apenas fazendo as chamadas no PL/SQL, não necessitando reescrever essas regras novamente no PHP por exemplo.

Outro benefício que temos é ao trocar de linguagem, vamos supor que usamos delphi com banco Oracle e queremos migrar para a linguagem Java, teríamos que escrever toda regra de negócio na linguagem Java correto? Mas e se a regra de negócio estiver no banco de dados? O trabalho de migrar para uma nova linguagem seria significamente reduzido!

Identify the different types of PL/SQL blocks

Temos 3 tipos de blocos PL/SQL, bloco anônimo, procedures e functions.

Output messages in PL/SQL

Para mostrarmos uma mensagem personalizada podemos usar o comando: dbms_output.put_line('mensagem desejada aqui'); mas para usarmos ela deve estar em um dos 3 blocos mencionados acima e estar com disponível para visualização executando o código: SET SERVEROUTPUT ON

Também podemos criar uma nova linha usando o comando: DBMS_OUTPUT.NEW_LINE;

Declaring PL/SQL Variables

Para declarar uma variável em um bloco anônimo colocamos a devinição dela abaixo do declare:

declare
variavel_teste varchar2(100);
numero_aleatorio integer := 1;
begin
variavel_teste := 'Olá mundo';
dbms_output.put_line(variavel_teste);
dbms_output.new_line;
dbms_output.put_line(numero_aleatorio);
end;

Resultado: Olá mundo 1

Na linha 2 declaramos a variavel_teste do tipo varchar2 com o tamanho 100 e na linha 3 declaramos a variável numero_aleatorio e já atribuímos o valor 1. Observe que na linha 5 foi feito a atribuição de ‘Olá mundo’ para a variavel_teste. Depois mostramos o resultado nas linhas 6 a 9.

Recognize valid and invalid identifiers

List the uses of variables, declare and initialize variables, use bind variables

List and describe various data types using the %TYPE attribute

Writing Executable Statements