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

PL/SQL - Conceitos Básicos

Embed Size (px)

DESCRIPTION

O PL/SQL é uma linguagem de acesso a dados relacionais para o SGBD da Oacle. Elá fornece um conjunto de funções que facilitam a vida do desenvolvedor no momento da criação dos programas, além do que, por ser executada dentro do SGBD não é necessário que movimentar os dados entre aplicação de banco de dados, tornando a execução bem mais rápida.

Citation preview

Page 1: PL/SQL - Conceitos Básicos

PL/SQL

Danilo Braga ICC – Software II

Instituto Nacional de Telecomincações - INATEL

http://migre.me/dESmd

Page 2: PL/SQL - Conceitos Básicos

http://migre.me/dCTlu

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

... Temos que falar de SQL

Page 3: PL/SQL - 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 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

Page 4: PL/SQL - Conceitos Básicos

http://migre.me/dCWHf

Agora sim é sobre PL/SQL

Page 5: PL/SQL - 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: PL/SQL - 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: PL/SQL - 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: PL/SQL - 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: PL/SQL - Conceitos Básicos

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árias API's intermediárias para acesso a dados

ODBC ou JDBC, etc

Existem Vantagens ?

Page 10: PL/SQL - Conceitos Básicos

http://migre.me/dCX9T

Mostra como isso funciona logo!!

Chega dessa teoria chata...

Page 11: PL/SQL - 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: PL/SQL - Conceitos Básicos

Funções Embutidas

Repetição

Condicionais

Estruturas da linguagem

Page 13: PL/SQL - Conceitos Básicos

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

Page 14: PL/SQL - 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: PL/SQL - 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: PL/SQL - 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: PL/SQL - Conceitos Básicos

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

Page 18: PL/SQL - Conceitos Básicos
Page 19: PL/SQL - Conceitos Básicos

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

Page 20: PL/SQL - Conceitos Básicos

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

Page 21: PL/SQL - Conceitos Básicos

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

Page 22: PL/SQL - Conceitos Básicos

Procedures

Triggers

Functions

Códigos dentro das aplicações

Java, C#, C++, ...

Onde usar estas estruturas

Page 23: PL/SQL - Conceitos Básicos

Vamos “botar” a mão na massa

Page 24: PL/SQL - 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: PL/SQL - Conceitos Básicos
Page 26: PL/SQL - Conceitos Básicos

Por hoje é isso !!!

E SE AINDA

TIVERMOS TEMPO ...

PERGUNTAS ??

http://migre.me/dDb41 http://migre.me/dDbda

Page 27: PL/SQL - 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 !