- procedures não precisam retornar algo (diferente das funções)
- trigger reage a uma ação sem a necessidade de chama-lo diretamente
- cada SGBD tem sua linguagem para criar esses objetos (PL/SQL é o da
ORACLE)
PL/SQL
- bloco que utiliza SQL para executar coisas
- 3 partes → declaração (opcional), execução, tratamento de erros
(opcional)
- adiciona mais coisas ao SQL (como loops, if, etc.)
- oracle por padrão, se você nãos tratar os erros, ele exibe o erro e
para a execução
- dentro da declaração você pode declarar → constantes, variáveis,
cursores(objetos que definem um DQL dentro)
DECLARE
-- declara os elementos
-- variavel
-- nome tipo [NOT NULL] := valor
exemplo_1 NUMBER(4) NOT NULL := 4;
exemplo_2 CHAR(1);
-- ROWTYPE pega o tipo de uma linha de uma tabela (deixa mais rapido, usando cursors)
-- TYPE pega o mesmo tipo de uma coluna de uma tabela
exemplo_3 Tabela.coluna%Type;
BEGIN
-- execucao
--exemplo
SELECT idade, sexo
INTO exemplo_1, exemplo_2
FROM Tabela
WHERE id=1;
-- aqui a Tabela precisa retornar exatemente 1 elemento
-- uso do if
IF ... THEN
...
ELSE IF ... THEN
...
ELSE
...
END IF;
EXCEPTION
-- excecoes
END;
-- coloca algo no console
-- || concatena elementos
dbms_output.put_line('test' || a || ' test');