BLOCOS
Anônimo
[DECLARE]
BEGIN
[EXCEPTION]
END;
Procedimento
PROCEDURE nome IS
BEGIN
[EXCEPTION]
END;
Função
BEGIN
RETURN valor
[EXCEPTION]
END;
DECLARANDO VARIÁVEIS
Tipos de Variáveis
Numéricos
Caractere
TIPO TABELA
Declarando
DECLARE
nome_var nome_var_tipo_tab;
Utilizando
Nome_var_tipo_tab(índice) := valor
Manipulando
OPERADORES
Aritméticos: +, -, *, /, MOD
Exponenciação: **
Comparação: =, <, >, <>, !=, <=, >=, IS NULL, LIKE, BETWEEN, IN
Atribuição: :=
Intervalo: ..
Concatenacão: ||
COMENTÁRIOS
Uma linha: --
Continuação*/
SELECT coluna1[,coluna2,coluna3,...,colunan]
INTO var1[,var2,var3,...,varn]
FROM tabela1[,tabela2,tabela3,...,tabelan]*
INSERIR DADOS
VALUES(v1[,v2,...,vn)
ATUALIZAR DADOS
UPDATE tabela
WHERE condição;
EXCLUIR DADOS
WHERE condição;
IF
IF condição THEN
Comandos;
Comandos;]
...
Comandos;]
[ELSE
COMANDOS;]
END IF;
CASE
CASE seletor
...
[ELSE resultadox]
END;
LOOP
LOOP
Comandos;
END LOOP;
WHILE
COMANDOS;
END LOOP;
FOR
COMANDOS;
END LOOP;
CURSOR
Sintaxe
DECLARE
CURSOR nome_cursor IS
BEGIN
LOOP
OPEN nome_cursor;
...
CLOSE cursor_nome
END LOOP;
END;
Atributos de Cursores
END LOOP;
OBS: LEMBRAR QUE var FAZ O PAPEL DO CONTADOR ENTÃO NÃO DECLARA
DECLARE
(faz SELECT);
BEGIN
nome_cursor(valor de var);
END;
**se for passar mais de um parâmetro, tem que abrir e fechar cursor a cada
parâmetro: OPEN nome_cursor(par1); ->
...
CLOSE nome_cursor
OPEN nome_cursor(par2)
...
EXCEÇÕES
EXCEPTION
comando1;
comando2;
...
...
...]
NO_DATA_FOUND
TOO_MANY_ROWS
INVALID_CURSOR
ZERO_DIVIDE
DUP_VAL_ON_INDEX
SUBPROGRAMAS
TIPOS:
SINTAXE
Procedimento
Declaracão_das_variáveis*
BEGIN
Corpo_do_procedimento;
END;
Função
Declaracão_das_variáveis*
BEGIN
Corpo_da_função;
END;
CHAMANDO
Procedimento
BEGIN
nome_procedimento[(valor(es)_par)];
END;
Função
BEGIN
END;
EXCLUINDO
Procedimento
Função
ORGANIZANDO (PACOTES)
Duas partes
Especificação: público
Corpo: privado
Sintaxe
Especificação
END [nome_pacote];
Exemplo:
var_teste INT;
END ex_pkg;
Corpo
END [nome_pacote];
Exemplo:
PROCEDURE teste_proc[(...)] IS
BEGIN
...
END;
FUNCTION teste_function[(...)] IS
BEGIN
...
RETURN var;
END;
END ex_pkg;
Chamando
[DECLARE]
BEGIN
nome_pacote.nome_subprograma[(...)];
END;
Exemplo:
ex_pkg.teste_proc[(...)];
Removendo
TRIGGERS
Não usar para refazer ações já existentes no SGBD (NOT NULL, UNIQUE, PK, FK,
CHECK...)
SINTAXE
ON nome_objeto
BEGIN
corpo do trigger
END;
BEFORE
AFTER
INSTEAD OF
EVENTO
CREATE
SHUTDOWN
ALTER
GRANT
DROP
REVOKE
SERVERERROR
INSERT
LOGON
DELETE
LOGOFF
UPDATE
STARTUP
TIPO
Comando
Linha
AÇÃO
REMOVENDO
RAISE_APPLICATION_ERROR(cod, 'msg')