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

Introdução ao PL/SQL: Recursos e Estruturas

PL/SQL é uma linguagem de programação procedural desenvolvida pela Oracle, que se integra fortemente ao SQL e é utilizada para processamento de transações em bancos de dados. Possui diversas características, como suporte a programação orientada a objetos, tratamento de exceções e uma variedade de tipos de dados. A estrutura básica de um programa PL/SQL é dividida em blocos que incluem seções de declarações, comandos executáveis e tratamento de exceções.

Traduzido por

ScribdTranslations
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)
49 visualizações13 páginas

Introdução ao PL/SQL: Recursos e Estruturas

PL/SQL é uma linguagem de programação procedural desenvolvida pela Oracle, que se integra fortemente ao SQL e é utilizada para processamento de transações em bancos de dados. Possui diversas características, como suporte a programação orientada a objetos, tratamento de exceções e uma variedade de tipos de dados. A estrutura básica de um programa PL/SQL é dividida em blocos que incluem seções de declarações, comandos executáveis e tratamento de exceções.

Traduzido por

ScribdTranslations
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

A linguagem de programação PL/SQL foi desenvolvida pela Oracle Corporation no final dos anos 1980 como procedural
extensão de linguagem para SQL e o banco de dados relacional Oracle. A seguir estão fatos notáveis sobre
PL/SQL:

PL/SQL é uma linguagem de processamento de transações totalmente portátil e de alto desempenho.

O PL/SQL fornece um ambiente de programação incorporado, interpretado e independente de sistema operacional.

PL/SQL também pode ser chamado diretamente da interface de linha de comando SQL*Plus.

Chamadas diretas também podem ser feitas de chamadas de linguagens de programação externas para o banco de dados.

A sintaxe geral do PL/SQL é baseada na dos idiomas de programação ADA e Pascal.

Além da Oracle, o PL/SQL está disponível no banco de dados em memória TimesTen e no IBM DB2.

Features of PL/SQL

O PL/SQL possui os seguintes recursos:

PL/SQL está fortemente integrado com SQL.

Oferece uma ampla verificação de erros.

Oferece numerosos tipos de dados.

Oferece uma variedade de estruturas de programação.

Ele suporta programação estruturada por meio de funções e procedimentos.

Ele suporta programação orientada a objetos.

Ele suporta o desenvolvimento de aplicativos web e páginas de servidor.


Vantagens do PL/SQL

O PL/SQL tem as seguintes vantagens:

SQL é a linguagem padrão de banco de dados e PL/SQL está fortemente integrada ao SQL. PL/SQL
suporta tanto SQL estático quanto dinâmico. SQL estático suporta operações DML e transações
controle a partir do bloco PL/SQL. SQL dinâmico é SQL que permite embutir instruções DDL no PL/SQL.
blocos.

PL/SQL permite enviar um bloco inteiro de instruções ao banco de dados de uma só vez. Isso reduz
tráfego de rede e oferece alto desempenho para as aplicações.

O PL/SQL proporciona alta produtividade aos programadores, pois pode consultar, transformar e atualizar dados em um
banco de dados.

O PL/SQL economiza tempo no design e na depuração com recursos robustos, como tratamento de exceções,
encapsulamento, ocultação de dados e tipos de dados orientados a objetos.

Aplicações escritas em PL/SQL são totalmente portáveis.

O PL/SQL oferece um alto nível de segurança.

O PL/SQL oferece acesso a pacotes SQL predefinidos.

O PL/SQL oferece suporte à Programação Orientada a Objetos.

O PL/SQL oferece suporte para o desenvolvimento de Aplicações Web e Páginas de Servidor.


ESTRUTURA BÁSICA DO PROGRAMA

PL/SQL é uma linguagem estruturada em blocos, o que significa que os programas PL/SQL são divididos e escritos em blocos lógicos de
código. Cada bloco consiste em três sub-partes:

S.N. Sections & Description

Declarations
1 Esta seção começa com a palavra-chave DECLARE. É uma seção opcional e define todas as variáveis,
cursos, subprogramas e outros elementos a serem usados no programa.

Comandos Executáveis
Esta seção está encapsulada entre as palavras-chave BEGIN e END e é uma seção obrigatória. Ela
2 consiste nas instruções PL/SQL executáveis do programa. Deve ter pelo menos uma
linha de código executável, que pode ser apenas um comando NULL para indicar que nada deve ser
executado.
Tratamento de Exceções
3 Esta seção começa com a palavra-chave EXCEÇÃO. Esta seção é novamente opcional e contém
exceção(ões) que tratam erros no programa.

Cada instrução PL/SQL termina com um ponto e vírgula (;). Blocos PL/SQL podem ser aninhados dentro de outros blocos PL/SQL.
usando BEGIN e END. Aqui está a estrutura básica de um bloco PL/SQL:

DECLARAÇÃO
<seção de declarações>
COMEÇAR
<executable command(s)>
EXCEÇÃO
<exception handling>
FIM;

Os Delimitadores PL/SQL

Um delimitador é um símbolo com um significado especial. A seguir está a lista de delimitadores em PL/SQL:

Delimitador Description

+, -, *, / Adição, subtração/negación, multiplicação, divisão

% Indicador de atributo

' Delimitador de string de caractere


. Seletor de componente

(,) Delimitador de expressão ou lista

: Indicador de variável de host

, Separador de itens

" Delimitador de identificador entre aspas

= Operador relacional

@ Indicador de acesso remoto

; Terminador de declaração

:= Operador de atribuição

=> Operador de associação

|| Operador de concatenação

** Operador de exponenciação

<<, >> Delimitador de rótulo (início e fim)

/*, */ Delimitador de comentário multilinear (início e fim)

-- Indicador de comentário de uma linha

.. Operador de intervalo

<, >, <=, >= Operadores relacionais

<>, '=, ~=, ^= Diferentes versões de NÃO É IGUAL


Os Comentários PL/SQL
Comentários de programa são declarações explicativas que você pode incluir no código PL/SQL que escreve e ajudam
qualquer um lendo seu código-fonte. Todas as linguagens de programação permitem algum tipo de comentários.

O PL/SQL suporta comentários de uma linha e comentários de várias linhas. Todos os caracteres disponíveis dentro de qualquer comentário são ignorados.
pelo compilador PL/SQL. Os comentários de linha única do PL/SQL começam com o delimitador -- (duas barras) e multi-linhas
os comentários estão envolvidos por /* e */.

DECLARAR
-- declaração de variável
message varchar2(20):='Hello, World!';
COMEÇO
/*
* Instrução(ões) executável(eis) PL/SQL
*/
dbms_output.put_line(mensagem);
FIM;

Tipos de Dados Escalares PL/SQL e Subtipos


Os Tipos de Dados Escalares e Subtipos PL/SQL pertencem às seguintes categorias:

Tipo de Data Description

Numérico Valores numéricos sobre os quais as operações aritméticas são realizadas.

Personagem Valores alfanuméricos que representam caracteres únicos ou strings de caracteres.

Booleano Valores lógicos sobre os quais operações lógicas são realizadas.

Data e Hora Datas e horários.

PL/SQL fornece subtótipos de tipos de dados. Por exemplo, o tipo de dado NUMBER tem um subtipo chamado INTEGER.
pode usar subtipos no seu programa PL/SQL para tornar os tipos de dados compatíveis com os tipos de dados em outros programas enquanto
embedding PL/SQL code in another program, such as a Java program.

Tipos de Dados Numéricos e Subtipos PL/SQL


A seguir estão os detalhes dos tipos de dados numéricos pré-definidos em PL/SQL e seus subtipos:

Tipo de Dados Description

Número inteiro assinado no intervalo de -[Link] a [Link], representado em


PLS_INTEGER
32 bits

BINARY_INTEGER Número inteiro assinado no intervalo de -[Link] a [Link], representado em


32 bits

BINARY_FLOAT Número de ponto flutuante em formato IEEE 754 de precisão simples

BINÁRIO_DUplo Número de ponto flutuante em formato IEEE 754 de dupla precisão

Número de ponto fixo ou ponto flutuante com valor absoluto na faixa de 1E-130 a
NÚMERO(prec, escala)
(mas não incluindo) 1.0E126. Uma variável do TIPO NÚMERO também pode representar 0.

DEC(prec, escala) Tipo de ponto fixo específico do ANSI com precisão máxima de 38 dígitos decimais.

DECIMAL(prec, scale) tipo de ponto fixo específico da IBM com precisão máxima de 38 dígitos decimais.

NUMERIC(pre, secale) Tipo flutuante com precisão máxima de 38 dígitos decimais.

ANSI specific floating-point type with maximum precision of 126 binary digits
PRECISÃO DUPLA
(aproximadamente 38 dígitos decimais)

Tipo de ponto flutuante específico da ANSI e IBM com precisão máxima de 126
FLOAT
dígitos binários (aproximadamente 38 dígitos decimais)

INTEIRO Tipo inteiro específico da ANSI com precisão máxima de 38 dígitos decimais

Tipo de inteiro específico da ANSI e IBM com precisão máxima de 38 casas decimais
INTEIRO
dígitos

Tipo de inteiro específico da ANSI e da IBM com precisão máxima de 38 decimais


SMALLINT
dígitos

Tipo de ponto flutuante com precisão máxima de 63 dígitos binários (aproximadamente


REAL
18 dígitos decimais

Tipos de Dados de Caractere PL/SQL e Subtipos


A seguir estão os detalhes dos tipos de dados de caracteres predefinidos em PL/SQL e seus subtipos:

Tipo de Dado Description

CARÁCTER String de caracteres de comprimento fixo com tamanho máximo de 32.767 bytes
VARCHAR2 String de caracteres de comprimento variável com tamanho máximo de 32.767 bytes

String binário ou de bytes de comprimento variável com tamanho máximo de 32.767 bytes, não
CRU
interpretado por PL/SQL

NCHAR Fixed-length national character string with maximum size of 32,767 bytes

NVARCHAR2 String de caracteres nacional de comprimento variável com tamanho máximo de 32.767 bytes

LONGO String de caracteres de comprimento variável com tamanho máximo de 32.760 bytes

Cadeia binária ou de bytes de comprimento variável com tamanho máximo de 32.760 bytes, não
LONGO CRU
interpretado por PL/SQL

ROWID Identificador de linha físico, o endereço de uma linha em uma tabela comum

UROWID Identificador de linha universal (físico, lógico ou identificador de linha estrangeiro)

Tipos de Dados Booleanos PL/SQL


O tipo de dados BOOLEAN armazena valores lógicos que são utilizados em operações lógicas. Os valores lógicos são os Booleanos.
valores VERDADEIRO e FALSO e o valor NULO.

No entanto, o SQL não possui um tipo de dado equivalente a BOOLEAN. Portanto, valores Booleanos não podem ser usados em:

instruções SQL

Funções SQL embutidas (como TO_CHAR)

Funções PL/SQL invocadas a partir de declarações SQL

Tipos de Data e Hora e Intervalo PL/SQL


O tipo de dado DATE para armazenar datetimes de comprimento fixo, que incluem o tempo do dia em segundos desde a meia-noite. Válido
as datas variam de 1 de janeiro de 4712 a.C. a 31 de dezembro de 9999 d.C.

O formato de data padrão é definido pelo parâmetro de inicialização da Oracle NLS_DATE_FORMAT. Por exemplo, o padrão
pode ser 'DD-MON-YY', que inclui um número de dois dígitos para o dia do mês, uma abreviação do mês
nome, e os últimos dois dígitos do ano, por exemplo, 01-OUT-12.

Each DATE includes the century, year, month, day, hour, minute, and second. The following table shows the valid
valores para cada campo:

Field Name Valid Datetime Values Valid Interval Values

-4712 a 9999
YEAR Qualquer inteiro não nulo
(excluindo o ano 0)
MONTH 01 a 12 0 a 11

01 a 31 (limitado pelo
valores de MÊS e
DIA YEAR, according to the Any nonzero integer
regras do calendário
for the locale)

HORA 00 a 23 0 a 23

MINUTE 00 a 59 0 a 59

00 a 59,9(n), onde
0 a 59,9(n), onde 9(n) é a precisão do intervalo
SEGUNDO 9(n) é a precisão de
segundos fracionários
segundos fracionários de tempo

-12 a 14 (faixa
TIMEZONE_HOUR acomoda a luz do dia Não aplicável
mudanças de horário de verão

TIMEZONE_MINUTE 00 to 59 Não aplicável

Encontrado no dinâmico
visualização de desempenho da REGIÃO_DE_FUSO_HORÁRIO
Não aplicável
NOME_DA_FUSO_HORÁRIO

Encontrado na dinâmica
TIMEZONE_ABBR visualização de desempenho
Não aplicável
V$NOMES_DE_FUSO_HORÁRIO

Tipos de Dados de Objeto Grande (LOB) PL/SQL


Os tipos de dados de grandes objetos (LOB) referem-se a itens de dados grandes, como texto, imagens gráficas, clipes de vídeo e som.
formas de onda. Os tipos de dados LOB permitem acesso eficiente, aleatório e em partes a esses dados. A seguir estão os predefinidos
Tipos de dados LOB do PL/SQL:

Data Type Description Size

Usado para armazenar grandes binários


BFILE objetos em sistema operacional Dependente do sistema. Não pode exceder 4 gigabytes (GB).
arquivos fora do banco de dados.

Usado para armazenar grandes binários


BLOB 8 a 128 terabytes (TB)
objetos no banco de dados.
Usado para armazenar grandes blocos de
CLOB dados de caractere no 8 a 128 TB
banco de dados.

Usado para armazenar grandes blocos de


NCLOB Dados NCHAR em 8 a 128 TB
banco de dados.

NULLs em PL/SQL
Os valores NULL em PL/SQL representam dados ausentes ou desconhecidos e não são um inteiro, um caractere ou qualquer outro.
tipo de dado específico. Observe que NULL não é o mesmo que uma string de dados vazia ou o valor de caractere nulo '\0'. Um nulo pode
ser atribuído, mas não pode ser igualado a nada, incluindo a si mesmo.

O Exemplo 'Olá Mundo':

DECLARAR
message varchar2(20):='Hello, World!';
INÍCIO
dbms_output.put_line(mensagem);
FIM;
/

OU

Dbms_output.put_line('olá mundo');

NOTA: -- Para exibir a mensagem de saída, o SERVEROUTPUT deve estar ativado.

Sintaxe :

ATIVAR SAÍDA DO SERVIDOR;

Q : WAP para adicionar 2 números.

Declarar

Um número(2);

B número(2);

C número(2);
Começar

A := 10;

B:= 20;

C := A + B;

Dbms_output.put_line('soma de '|| A || ' e ' || B || ' é ' || C);

Fim;

Q : Programa para somar 2 números dados pelo usuário

Declara

Um número(2);

B número(2);

C número(2);

Começar

A := &A;

B:= &B;

C := A + B;

Dbms_output.put_line('soma de '|| A || ' e ' || B || ' é ' || C);

Fim;

WAP code to calculate total amount (TA+DA) of an employee (EID= 20) , Also update the amount in the table .

Emp (EID, Ename, TA,DA,total )

Declarar

um número(10);
número b (10);
c número(10);
Começar
Selecione TA, DA em a,b de Emp onde EID = 20;
C := a+b;
Atualizar Emp defina total = c onde EID = 20;
Fim;

%TIPO
PARA adquirir o mesmo tipo de dado para uma variável declarada como aquele que estava no banco de dados.

Sintaxe :

V_nome NOME_DA_TABELA.NOME_DA_COLUNA%TIPO

Exemplo :

Declarar
A [Link]%tipo;

ESTATEMENTOS CONDICIONAIS

SE–ENTÃO
SE–ENTÃO–SENÃO
SE–ENTÃO–SE NÃO

WAP to find the largest number

Declarar
Um número (2);
B número(2);
Begin
A := &A;
B := &B;

Se A > B ENTÃO

DBMS_OUTPUT.PUT_LINE('A É MAIOR');

OUTRO

DBMS_OUTPUT.PUT_LINE('B É MAIOR');
FIM SE;
FIM;

WAP TO CHECK EVEN OR ODD

Declarar
Um número (2);
Começar
A = &A;
Se A mod 2 = 0 então
Dbms_output.put_line('par');
Outra coisa
Dbms_output.put_line('ímpar');
Fim se;
Fim;

LAÇAMENTO
LAÇO
LAÇO ENQUANTO
LOOP FOR

WAP exibir os primeiros 10 números naturais.

Declarar
i número(2);

começar

i := 1;

LAÇO
Dbms_output.put_line(i);
i:=i+1;
Saia quando i > 10;
FIM DO LOOP;
FIM;

Q–wap para imprimir o quadrado dos números de 1 a 10;


Q–WAP para encontrar a soma dos primeiros 10 números
Q–WAP para imprimir a tabela do 2.
Q–WAP para encontrar o fatorial

Laço FOR

Declarar
Um número (4);
eu número(4);
começar
para i em 1..10
laço
A:=2*i;
Dbms_output.put_line(' 2 * ' || i || ' = ' || A );

Fim do loop;

Fim;

Para reverter

para i em reverso 1..10


LOOP WHILE :

DECLARAR

um número(2) := 10;

COMEÇAR

ENQUANTO a < 20 REPETIR

dbms_output.put_line('valor de a: ' || a);

a := a + 1;

FIM DO LOOP;

FIM;

Você também pode gostar