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
