0% acharam este documento útil (0 voto)
2 visualizações7 páginas

PL SQL

PL/SQL é uma linguagem de programação procedural desenvolvida pela Oracle que combina SQL com recursos de programação. Ela organiza construções em blocos, permitindo declarações, execução e tratamento de exceções. O documento também aborda variáveis, condições, loops, subprogramas, cursores, tratamento de exceções, triggers e pacotes, fornecendo uma visão geral abrangente da linguagem.

Enviado por

mpcdtit
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações7 páginas

PL SQL

PL/SQL é uma linguagem de programação procedural desenvolvida pela Oracle que combina SQL com recursos de programação. Ela organiza construções em blocos, permitindo declarações, execução e tratamento de exceções. O documento também aborda variáveis, condições, loops, subprogramas, cursores, tratamento de exceções, triggers e pacotes, fornecendo uma visão geral abrangente da linguagem.

Enviado por

mpcdtit
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

PL-SQL

PL-SQL DELIMITADORES
A linguagem PL/SQL (Procedural Language/Structured Query
DELIMITADOR DESCRIÇÃO
Language) é uma combinação de SQL com os recursos procedurais de
linguagens de programação. Foi desenvolvido pela Oracle Corporation no +, -, *, / Adição, subtração/negação, multiplicação, divisão
início dos anos 90 para melhorar os recursos do SQL. A PL/SQL é uma das
três principais linguagens de programação incorporadas no banco de dados % Indicador de atributos
Oracle, juntamente com o próprio SQL e o Java.
' Delimitador de string de caracteres
Vale ressaltar que a linguagem é dita procedural porque permite chamada a
procedimentos (métodos, rotinas, etc.) pré-programados. Tenha em mente
. Seletor de componentes
que a SQL é declarativa, enquanto a PL/SQL é procedural.
(,) Delimitador de lista ou expressões

BLOCO PL/SQL : Indicador de variável de host

As construções PL/SQL são organizadas nos chamados blocos PL/SQL que , Separador de itens
são subdivididos em algumas áreas.
" Delimitador para identificadores com aspas
DECLARE
<seção de declarações>
BEGIN = Operador relacional
<commandos executáveis>
EXCEPTION @ Indicador de acesso remoto
<tratamento de exceções>
END;
; Terminação de uma declaração

Declarações Execução Exceções := Operador de atribuição

Define variáveis, cursores, Instruções PL/SQL executáveis Manipulação de exceções que tratam => Operador de associação
subprogramas e outros elementos erros

DECLARE BEGIN e END EXCEPTION || Operador de concatenação

OPCIONAL OBRIGATÓRIA OPCIONAL ** Operador de exponenciação

TI TOTAL para Área Fiscal e Controle


Professor Ramon Souza
2
Licensed to
PL-SQL
<<, >> Delimitador de rótulo (label) TIPOS DE DADOS
/*, */ Comentário de múltiplas linhas CATEGORIA DESCRIÇÃO

-- Comentário de única linha Valores simples sem componentes internos


Scalar
1 como numéricos, caracteres, booleanos e
.. Operador de intervalo (escalar)
datas.
<, >, <=, >= Operadores relacionais
Ponteiros para objetos que são armazenados
<>, '=, ~=, ^= Versões para NOT EQUAL separadamente em outros itens de dados,
2 Large Object (LOB)
como um texto, imagens, vídeos e
COMENTÁRIOS PL/SQL formas.

O PL/SQL suporta comentários de linha única e multilinha. Os Itens de dados que possuem componentes
comentários de linha única do PL/SQL começam com o delimitador -- (hífen Composite internos que podem ser acessados
duplo) e os comentários de várias linhas são delimitados por / * e * /. 3
(composições) individualmente. Por exemplo, coleções e
registros.

Reference
4 Ponteiros para outros itens de dados.
(referências)

TI TOTAL para Área Fiscal e Controle


Professor Ramon Souza
3
Licensed to
PL-SQL
VARIÁVEIS EM PL/SQL
A sintaxe para declarar uma variável é apresentada a seguir, sendo que o que
está entre [] é opcional e somente será usado quando aplicável.

nome_da_variável [CONSTANT] tipo_de_dados [NOT NULL] [:= |


DEFAULT valor_inicial] IF condition THEN
S;
Quanto ao escopo ou acessibilidade, uma variável pode ser: END IF;

Local Global IF-THEN

IF condition THEN
Declarada em um bloco interno. Declarada no bloco mais externo. S1;
ELSE
Acessada pelos blocos mais
Não acessível aos blocos externos.
internos. S2;
END IF;

CONDIÇÕES EM PL/SQL
As condições permitem que especificar estruturas de tomada de decisão CASE seletor
que serão avaliadas ou testadas pelo programa, juntamente com uma WHEN 'valor1'
THEN S1;
declaração ou instruções a serem executadas se a condição for determinada
como verdadeira e, opcionalmente, outras instruções a serem executadas se a WHEN 'valor2'
THEN S2;
condição for determinada como falsa.
WHEN 'valor3'
O PL/SQL apresenta alguns tipos de estruturas condicionais, entre elas IF- THEN S3;
THEN, IF-THEN-ELSE, IF-THEN-ELSEIF e CASE. ...
ELSE Sn;
CASE END CASE;

TI TOTAL para Área Fiscal e Controle


Professor Ramon Souza
4
Licensed to
PL-SQL
LOOPS SUBPROGRAMAS

Unidade/módulo de programa que executa uma tarefa específica

Subprogramas
No nível do esquema

Pode ser criado Dentro de um pacote

Dentro de um bloco
PL/SQL

LOOP LOOP FUNCTION Retornam um valor


-- sequência de declarações; Pode ser de dois tipos
END LOOP; PROCEDURE
Não retornam valor,
usados para executar ação.

WHILE WHILE condição LOOP


-- sequência de declarações;
END LOOP; PROCEDURE
FOR FOR contador IN valor_inicial .. valor_final LOOP Uma PROCEDURE é criada com base na seguinte sintaxe:
--sequência de declarações;
END LOOP; CREATE [OR REPLACE] PROCEDURE nome_da_procedure
[(nome_do_parâmetro [IN | OUT | IN OUT] tipo [, ...])]
{IS | AS}
BEGIN
< corpo_da_procedure >
END nome_da_procedure;

TI TOTAL para Área Fiscal e Controle


Professor Ramon Souza
5
Licensed to
PL-SQL
Implícito Criados automaticamente

FUNCTION CURSOR nome_cursor


IS SELECT campos
FROM tabela;
Uma FUNCTION é criada com base na seguinte sintaxe:
OPEN nome_cursor;
CREATE [OR REPLACE] FUNCTION nome_da_funcao Explícitos
Criados pelo
programador
FETCH nome_cursor
[(nome_do_parametro [IN | OUT | IN OUT] tipo [, ...])] Cursor
INTO campos;

RETURN return_tipo_de_dados
CLOSE cursor;

{IS | AS}
%FOUND TRUE se afetar linhas.
BEGIN
< corpo da função > %NOTFOUNT
TRUE se não afetar
linhas.
Atributos
END [nome_da_funcao];
TRUE se cursor está
%ISOPEN aberto.

Número de linhas
%ROWCOUNT
CURSORES afetadas.

Um cursor é um ponteiro para uma área de contexto de memória. O REGISTROS


PL/SQL controla a área de memória através de um cursor. Um cursor
Um registro é uma estrutura de dados que pode conter itens de dados de
mantém as linhas (uma ou mais) retornadas por uma instrução SQL. O
conjunto de linhas que o cursor contém é referido como o conjunto ativo. diferentes tipos. Os registros consistem em campos diferentes, semelhantes
a uma linha de uma tabela de banco de dados. Tipos de registros:
▪ Baseado em tabela: o atributo% ROWTYPE permite que um
programador crie registros baseados em tabela.
▪ Baseados em cursor: utilizar um cursor para definir um registro.
▪ Definidos pelo usuário: os registros são definidos diretamente
pelos usuários.

TI TOTAL para Área Fiscal e Controle


Professor Ramon Souza
6
Licensed to
PL-SQL
TRATAMENTO DE EXCEÇÃO Exceção
Oracle
Error
SQLCODE Lançada quando

O PL/SQL suporta o tratamento de exceções usando o bloco EXCEPTION ACCESS_INTO_NULL 06530 -6530 Valor é atribuído a um objeto nulo.
no programa, em que uma ação apropriada é tomada contra a condição de
Nenhuma das condições definidas por CASE é
erro. As exceções podem ser definidas pelo usuário ou já pré-definidas pelo CASE_NOT_FOUND 06592 -6592
selecionada e não existe cláusula ELSE.
próprio sistema. A sintaxe geral para o tratamento de exceções é a seguinte,
Método tenta acessar ou atribuir valores para coleções
em que é possível listar quantas exceções puder manipular e a exceção padrão COLLECTION_IS_NULL 06531 -6531
não inicializadas.

será tratada usando WHEN others THEN: Tentativa de armazenar valores duplicados em uma
DUP_VAL_ON_INDEX 00001 -1
coluna com índice único.
DECLARE
Tentativas de uma operação de cursor não permitida,
INVALID_CURSOR 01001 -1001
como fechar um cursor não aberto.
<seção_de_declaração>
BEGIN INVALID_NUMBER 01722 -1722
A conversão de uma cadeia de caracteres em um
número falha porque a cadeia não representa um
número válido.
<commandos executáveis>
Programa tenta efetuar logon no banco com um nome
LOGIN_DENIED 01017 -1017
EXCEPTION de usuário ou senha inválidos.

<tratamento das exceções começa aqui> NO_DATA_FOUND 01403 +100 SELECT INTO não retorna nenhuma linha.

WHEN excecao1 THEN NOT_LOGGED_ON 01012 -1012


Uma chamada de banco de dados é realizada sem estar
conectada ao banco de dados.
declarações de tratamento da exceção 1
PROGRAM_ERROR 06501 -6501 Problema interno no PL/SQL.
WHEN exception2 THEN
Cursor busca um valor em uma variável com tipo de
ROWTYPE_MISMATCH 06504 -6504
declarações de tratamento da exceção 2 dados incompatível.

WHEN exception3 THEN SELF_IS_NULL 30625 -30625


Um método membro é invocado, mas a instância do tipo
de objeto não foi inicializada.

declarações de tratamento da exceção 3


PL/SQL fica sem memória ou a memória está
STORAGE_ERROR 06500 -6500
corrompida.
........
Uma instrução SELECT INTO retorna mais de uma
WHEN others THEN TOO_MANY_ROWS 01422 -1422
linha.

declarações de tratamento padrão de exceções Ocorre um erro de aritmética, conversão, truncamento


VALUE_ERROR 06502 -6502
ou tamanho específico.

ZERO_DIVIDE 01476 1476 Tentativa de dividir um número por zero.

TI TOTAL para Área Fiscal e Controle


Professor Ramon Souza
7
Licensed to
PL-SQL
TRIGGERS

TRIGGER

Programas armazenados que são executados ou disparados automaticamente quando


alguns eventos ocorrem.

CREATE [OR REPLACE] TRIGGER nome_da_trigger


{BEFORE | AFTER | INSTEAD OF}
{INSERT [OR] | UPDATE [OR] | DELETE}
[OF coluna]
ON tabela
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
WHEN (condicao)

PACKAGES
Packages ou pacotes são objetos de esquema que agrupam tipos PL/SQL
logicamente relacionados, variáveis e subprogramas.

Package

Especificação Corpo

Interface. Código para os CREATE


CREATE
Apenas declara elementos PACKAGE
os elementos. PACKAGE declarados. BODY

TI TOTAL para Área Fiscal e Controle


Professor Ramon Souza
8
Licensed to

Você também pode gostar