27
PL/SQL Danilo Braga ICC – Software II [email protected] Instituto Nacional de Telecomincações - INATEL ttp://migre.me/dESmd

Plsql - Conceitos Básicos

Embed Size (px)

Citation preview

Page 1: Plsql - Conceitos Básicos

PL/SQL

Danilo BragaICC – Software II

[email protected]

Instituto Nacional de Telecomincações - INATEL

http://migre.me/dESmd

Page 2: Plsql - Conceitos Básicos

Senta que lá vem a história

http://migre.me/dCTlu

Antes de começarmos a falar de PL/SQL ...

... Temos que falar de SQL

Page 3: Plsql - Conceitos Básicos

SQL (Structured Query Language) Linguagem declarativa Projetada para trabalhar com BD

Relacionais Criada no início da década de 70

SQL ANSIPadronização da linguagem pela American National Standards Institute (ANSI) em 19868 Revisões

SQL-86, SQL-89, SQL-92, SQL-1999, SQL-2003, SQL-2006, SQL-2008, SQL-2011

Pequeno Histórico

Page 4: Plsql - Conceitos Básicos

http://migre.me/dCWHf

Agora sim é sobre PL/SQL

Page 5: Plsql - Conceitos Básicos

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/Structured Query Language (PL/SQL) 

É uma extensão da linguagem SQL

PL/SQL

Page 6: Plsql - Conceitos Básicos

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

Page 7: Plsql - Conceitos Básicos

PL/SQL

Suporta conceito de packages

Agrupamento de funções relacionadas

Provê um mecanismo de captura e

tratamento de erros

Page 8: Plsql - Conceitos Básicos

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 ?

Page 9: Plsql - Conceitos Básicos

Por ser executado dentro do OracleDados não precisam entrar/sair do SGBDNão há sobrecarga de tráfego pela rede

Não são necessárias API's intermediárias para acesso a dados

ODBC ou JDBC, etc

Existem Vantagens ?

Page 10: Plsql - Conceitos Básicos

http://migre.me/dCX9T

Mostra como isso funciona logo!!

Chega dessa teoria chata...

Page 11: Plsql - Conceitos Básicos

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

Page 12: Plsql - Conceitos Básicos

Funções Embutidas

Repetição

Condicionais

Estruturas da linguagem

Page 13: Plsql - Conceitos Básicos

Condicionais

IF-THEN Statement

IF condition THENstatements

END IF;

IF-THEN-ELSIF Statement

IF condition1 THEN

statement1 ELSIF condition2 THEN

statement2 ELSE

statement3END IF;

CASE StatementCASE type

WHEN 'A' THEN statement1;WHEN 'B' THEN statement2

ELSE statementElse;END CASE;

.

Page 14: Plsql - Conceitos Básicos

Repetição

LOOP

LOOP statements END LOOP;

EXIT

LOOP ... IF num < 5 THEN

EXIT; END IF; END LOOP;

EXIT WHEN

LOOP

...

EXIT WHEN num < 5;

END LOOP;

Page 15: Plsql - Conceitos Básicos

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

Page 16: Plsql - Conceitos Básicos

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;

Page 17: Plsql - Conceitos Básicos

Evita a necessidade de reescrita

de códigoTodas as funções já foram testadas pela

ORACLE

Fornecem mais usabilidade ao

PL/SQL

Grande variedade de

funções

Funções Embuitdas

Page 18: Plsql - Conceitos Básicos
Page 19: Plsql - Conceitos Básicos

Funções Embutidas

Character / String Functions:Ascii Convert Lower SoundexAsciiStr Decompose Lpad SubstrChr Dump Ltrim TranslateCompose Initcap Replace

TrimConcat Instr Rpad Upper|| Length Rtrim VSize

||‘A’||‘B’||‘C’||‘D’ -- ABCD

Page 20: Plsql - Conceitos Básicos

Advanced Functions:BFilename Group_ID NULLIF UserCardinality Lag NVL UserEnvCase Statement Lead NVL2Coalesce LNNVL Sys_ContextDecode NANVL Uid

Decodedecode( 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

Page 21: Plsql - Conceitos Básicos

Mathematical Functions:Abs Covar_pop Max SqrtAcos Covar_samp Median StdDevAsin Count Min SumAtan Cume_Dist Mod TanAtan2 Dense_Rank Power TanhAvg Exp Rank Trunc (numbers)Bin_To_Num Extract Remainder Trunc (dates)BitAnd Floor Round (numbers) Var_popCeil Greatest Round (dates) Var_sampCorr Least Sign VarianceCos Ln SinCosh Log Sinh

Date Functions:Add_Months Last_Day Round To_DateCurrent_Date LocalTimestamp SessionTimeZoneCurrent_Timestamp Months_Between Sysdate

DbTimeZone New_Time SysTimestampFrom_Tz Next_Day To_Char

Funções Embutidas

Page 22: Plsql - Conceitos Básicos

Procedures

Triggers

Functions

Códigos dentro das aplicaçõesJava, C#, C++, ...

Onde usar estas estruturas

Page 23: Plsql - Conceitos Básicos

Vamos “botar” a mão na massa

Page 24: Plsql - Conceitos Básicos

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”

Page 25: Plsql - Conceitos Básicos
Page 26: Plsql - Conceitos Básicos

Por hoje é isso !!!

OBRIGADO!! E SE AINDA TIVERMOS TEMPO ...

PERGUNTAS ??

http://migre.me/dDb41http://migre.me/dDbda

Page 27: Plsql - Conceitos Básicos

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 !