SlideShare uma empresa Scribd logo
1 de 27
PL/SQL
Danilo Braga
ICC – Software II
danilo.braga@inatel.br
Instituto Nacional deTelecomincações - INATEL
http://migre.me/dESmd
http://migre.me/dCTlu
Antes de começarmos a
falar de PL/SQL ...
...Temos que falar de SQL
SQL (Structured Query Language)
Linguagem declarativa
Projetada para trabalhar com BD Relacionais
Criada no início da década de 70
SQL ANSI
Padronização da linguagem pela American National
Standards Institute (ANSI) em 1986
8 Revisões
SQL-86, SQL-89, SQL-92, SQL-1999,
SQL-2003, SQL-2006, SQL-2008, SQL-2011
Pequeno Histórico
http://migre.me/dCWHf
Agora sim é sobre PL/SQL
Desenvolvida pela Oracle no início dos anos
90 para melhorar as capacidades do SQL
Adiciona ao SQL características de linguagens
de procedurais
Procedural Language/StructuredQuery Language (PL/SQL)
É uma extensão da linguagem SQL
PL/SQL
Não é um produto separado
É uma tecnologia integrada ao SGDB Oracle
É possível trabalhar de forma tanto
declarativa (SQL) quanto de forma procedural
(PL/SQL)
PL/SQL
PL/SQL
Suporta conceito de packages
Agrupamento de funções relacionadas
Provê um mecanismo de captura e
tratamento de erros
Aplicações para a manipulação grandes volumes
de dados
Tabelas com milhões ou bilhões de registros
Purge (limpeza)
Backup
Rotinas de atualização/exclusão em massa
Reports/BI
Para que eu preciso disso ?
Por ser executado dentro do Oracle
Dados não precisam entrar/sair do SGBD
Não há sobrecarga de tráfego pela rede
Não são necessáriasAPI's
intermediárias para acesso a dados
ODBC ou JDBC, etc
ExistemVantagens ?
http://migre.me/dCX9T
Mostra como isso funciona logo!!
Chega dessa teoria chata...
DECLARE(OPTIONAL)
variable_declarations
BEGIN
program_code
EXCEPTION(OPTIONAL)
exception_handlers
END;
declarar variáveis,
constantes, registros e
cursores
Lógica do programa,
como loops, instruções
condicionais e SQLs
Utilizada para tratar os
erros gerados durante a
execução
Anatomia de uma aplicação
Funções Embutidas
Repetição
Condicionais
Estruturas da linguagem
Condicionais
IF-THEN Statement
IF condition THEN
statements
END IF;
IF-THEN-ELSIF Statement
IF condition1 THEN
statement1
ELSIF condition2 THEN
statement2
ELSE
statement3
END IF;
CASE Statement
CASE type
WHEN 'A' THEN statement1;
WHEN 'B' THEN statement2
ELSE statementElse;
END CASE;
Repetição
LOOP
LOOP
statements
END LOOP;
EXIT
LOOP
...
IF num < 5THEN
EXIT;
END IF;
END LOOP;
EXIT WHEN
LOOP
...
EXIT WHEN num < 5;
END LOOP;
Repetição
WHILE-LOOP
WHILE total < 25 LOOP
…
total := total + inc.
END LOOP;
FOR-LOOP
FOR counter IN [REVERSE] m..n LOOP
statements;
END LOOP;
FOR-LOOP
FOR i IN reverse 1..3 LOOP
dbms_output.put_line(i);
END LOOP;
Resultado: 3 2 1
Repetição
FOR row IN (SELECT * FROM empregado) LOOP
dbms_output.put_line(row.nome);
END LOOP;
FOR row IN (SELECT * FROM empregado) LOOP
EXIT WHEN UPPER(row.nome) LIKE 'MARIA%';
END LOOP;
Evita a necessidade de reescrita de código
Todas as funções já foram testadas pela ORACLE
Fornecem mais usabilidade ao PL/SQL
Grande variedade de funções
Funções Embuitdas
Funções Embutidas
Character / String Functions:
Ascii Convert Lower Soundex
AsciiStr Decompose Lpad Substr
Chr Dump Ltrim Translate
Compose Initcap Replace Trim
Concat Instr Rpad Upper
|| Length Rtrim VSize
||
‘A’||‘B’||‘C’||‘D’ -- ABCD
Advanced Functions:
BFilename Group_ID NULLIF User
Cardinality Lag NVL UserEnv
Case Statement Lead NVL2
Coalesce LNNVL Sys_Context
Decode NANVL Uid
Decode
decode( expression , search , resultTrue, resultFalse)
SELECT decode(avaliacao , 3, ‘ÓTIMO’,
2, ‘BOM’,
‘REGULAR') FROM empregado;
NVL
NVL(nome, 'n/a') -- ‘n/a’ caso o nome
-- seja NULL
Funções Embutidas
Mathematical Functions:
Abs Covar_pop Max Sqrt
Acos Covar_samp Median StdDev
Asin Count Min Sum
Atan Cume_Dist Mod Tan
Atan2 Dense_Rank Power Tanh
Avg Exp Rank Trunc (numbers)
Bin_To_Num Extract Remainder Trunc (dates)
BitAnd Floor Round (numbers) Var_pop
Ceil Greatest Round (dates) Var_samp
Corr Least Sign Variance
Cos Ln Sin
Cosh Log Sinh
Date Functions:
Add_Months Last_Day Round To_Date
Current_Date LocalTimestamp SessionTimeZone
Current_Timestamp Months_Between Sysdate
DbTimeZone New_Time SysTimestamp
From_Tz Next_Day To_Char
Funções Embutidas
Procedures
Triggers
Functions
Códigos dentro das aplicações
Java, C#, C++, ...
Onde usar estas estruturas
Vamos “botar” a mão na massa
Requisitos
“Equalizador salários”
Os salários devem ser reajustados
• 15 % para maiores 40 anos
• 10 % para maiores de 35 anos
• 5 % para maiores de 30 anos
Se o salário ajustado for maior que a média salarial, o
salário será o mesmo
• A média deve desconsiderar os salários extremos(maior
e menor)
Todas as alterações na base devem ser “logadas”
Por hoje é isso !!!
E SE AINDA
TIVERMOS TEMPO ...
PERGUNTAS ??
http://migre.me/dDb41
http://migre.me/dDbda
http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/04_struc.htm
http://www.techonthenet.com/oracle/functions/
http://www.developer.com/tech/article.php/777761/Day-1-Learning-the-Basics-
of-PLSQL.htm
http://imasters.com.br/artigo/1754/oracle/examinando-alguns-exemplos-pl-sql/
Quem me ajudou !

Mais conteúdo relacionado

Semelhante a Introdução a PL/SQL

PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosDanilo Braga
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveislaritha
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)Igor Abade
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6Wagner Bianchi
 
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Alex Zaballa
 
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Alex Zaballa
 
Cartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfCartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfEdkallenn Lima
 
Linguagens De ProgramaçãO Clp
Linguagens De ProgramaçãO ClpLinguagens De ProgramaçãO Clp
Linguagens De ProgramaçãO ClpJÚLIO PEIXOTO
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig LatinElen Arantza
 
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTIOracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTIFernando Ike
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Apostila de sql server 2008
Apostila de sql server 2008Apostila de sql server 2008
Apostila de sql server 2008marcos0512
 
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresOracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresAlex Zaballa
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java Manuel Menezes de Sequeira
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologiaselliando dias
 
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...tdc-globalcode
 

Semelhante a Introdução a PL/SQL (20)

PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos Básicos
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveis
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
Gestão de ciclo de vida de Banco de Dados: Já passou da hora! (TDC POA 2016)
 
Sql proficiente
Sql proficienteSql proficiente
Sql proficiente
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
 
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
 
Apostila ib
Apostila ibApostila ib
Apostila ib
 
Cartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfCartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdf
 
Linguagens De ProgramaçãO Clp
Linguagens De ProgramaçãO ClpLinguagens De ProgramaçãO Clp
Linguagens De ProgramaçãO Clp
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig Latin
 
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTIOracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
Apostila de sql server 2008
Apostila de sql server 2008Apostila de sql server 2008
Apostila de sql server 2008
 
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresOracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
 
Aulas_SQL.pdf
Aulas_SQL.pdfAulas_SQL.pdf
Aulas_SQL.pdf
 

Introdução a PL/SQL