Plsql - Conceitos Básicos

Preview:

Citation preview

PL/SQL

Danilo BragaICC – Software II

danilo.braga@inatel.br

Instituto Nacional de Telecomincações - INATEL

http://migre.me/dESmd

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

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

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/Structured Query 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 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 ?

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 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;

.

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;

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ódigoTodas 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 SoundexAsciiStr Decompose Lpad SubstrChr Dump Ltrim TranslateCompose Initcap Replace

TrimConcat Instr Rpad Upper|| Length Rtrim VSize

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

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

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

Procedures

Triggers

Functions

Códigos dentro das aplicaçõesJava, 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 !!!

OBRIGADO!! E SE AINDA TIVERMOS TEMPO ...

PERGUNTAS ??

http://migre.me/dDb41http://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 !