PL/SQL
Danilo Braga
ICC – Software II
danilo.braga@inatel.br
Instituto Nacional deTelecomincações - INATEL
http://migre.me...
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éca...
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 ling...
Não é um produto separado
É uma tecnologia integrada ao SGDB Oracle
É possível trabalhar de forma tanto
declarativa (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
...
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 n...
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,...
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
...
Repetição
LOOP
LOOP
statements
END LOOP;
EXIT
LOOP
...
IF num < 5THEN
EXIT;
END IF;
END LOOP;
EXIT WHEN
LOOP
...
EXIT WHEN...
Repetição
WHILE-LOOP
WHILE total < 25 LOOP
…
total := total + inc.
END LOOP;
FOR-LOOP
FOR counter IN [REVERSE] m..n LOOP
s...
Repetição
FOR row IN (SELECT * FROM empregado) LOOP
dbms_output.put_line(row.nome);
END LOOP;
FOR row IN (SELECT * FROM em...
Evita a necessidade de reescrita de código
Todas as funções já foram testadas pela ORACLE
Fornecem mais usabilidade ao PL/...
Funções Embutidas
Character / String Functions:
Ascii Convert Lower Soundex
AsciiStr Decompose Lpad Substr
Chr Dump Ltrim ...
Advanced Functions:
BFilename Group_ID NULLIF User
Cardinality Lag NVL UserEnv
Case Statement Lead NVL2
Coalesce LNNVL Sys...
Mathematical Functions:
Abs Covar_pop Max Sqrt
Acos Covar_samp Median StdDev
Asin Count Min Sum
Atan Cume_Dist Mod Tan
Ata...
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 ...
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://ww...
Plsql - Conceitos Básicos
Plsql - Conceitos Básicos
Próximos SlideShares
Carregando em…5
×

Plsql - Conceitos Básicos

481 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
481
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
21
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Plsql - Conceitos Básicos

  1. 1. PL/SQL Danilo Braga ICC – Software II danilo.braga@inatel.br Instituto Nacional deTelecomincações - INATEL http://migre.me/dESmd
  2. 2. http://migre.me/dCTlu Antes de começarmos a falar de PL/SQL ... ...Temos que falar de SQL
  3. 3. 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
  4. 4. http://migre.me/dCWHf Agora sim é sobre PL/SQL
  5. 5. 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
  6. 6. 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
  7. 7. PL/SQL Suporta conceito de packages Agrupamento de funções relacionadas Provê um mecanismo de captura e tratamento de erros
  8. 8. 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 ?
  9. 9. 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 ?
  10. 10. http://migre.me/dCX9T Mostra como isso funciona logo!! Chega dessa teoria chata...
  11. 11. 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
  12. 12. Funções Embutidas Repetição Condicionais Estruturas da linguagem
  13. 13. 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;
  14. 14. 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;
  15. 15. 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
  16. 16. 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;
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. Procedures Triggers Functions Códigos dentro das aplicações Java, C#, C++, ... Onde usar estas estruturas
  22. 22. Vamos “botar” a mão na massa
  23. 23. 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”
  24. 24. Por hoje é isso !!! E SE AINDA TIVERMOS TEMPO ... PERGUNTAS ?? http://migre.me/dDb41 http://migre.me/dDbda
  25. 25. 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 !

×