Oracle PL/SQL Overview



Documentos relacionados
PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

Oracle 10g: SQL e PL/SQL

SQL Procedural. Josino Rodrigues Neto

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Logado no OracleXE vamos acessar a opção:

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Projeto de Banco de Dados

PL/pgSQL por Diversão e Lucro

António Rocha Nuno Melo e Castro


Consultoria e Treinamento em Bancos de Dados Relacionais

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

Funções Definidas pelo Usuário

Linguagem PL/SQL e Triggers

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Hugo Pedro Proença, 2007

BD II (SI 587) Procedimentos Armazenados

Sistemas de Informação

PROCEDURES, FUNÇÕES, PL/SQL, CURSORES, VIEW, ÍNDICE e SEQUÊNCIA. Stored procedure PL/SQL. Procedimentos e Funções. Procedimento (procedure) Procedure

Controle de transações em SQL

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

Banco de Dados II. PL/SQL - Procedures -Cursor - Funções. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Bancos de Dados I. Integridade semântica

SQL Gatilhos (Triggers)

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição.

PL/SQL. Linguagens hospedeiras

Triggers no PostgreSQL

INTRODUÇÃO AO PL/SQL

Tarefa Orientada 19 Triggers

Bases de Dados 2007/2008. Aula 8

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

PL/pgSQL. Introdução. Introdução. Introdução

Motivação. Aplicações precisam acessar o BD Linguagens BD X Linguagens Programação. paradigmas diferentes (impedance mismatch)

Comandos de Manipulação

Introdução ao PL/SQL

Banco de Dados II. PL/SQL Introdução. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

SQL Pacotes. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados Pacotes

Bases de Dados 2007/2008. Aula 9

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Transações Seguras em Bancos de Dados (MySQL)

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:

Treinamento. DBA Oracle 11g. Duração: 120 horas

Programação SQL. Introdução

A linguagem SQL

INE Banco de Dados II. Sumário

Usando PostgreSQL na Regra de Negócio de um ERP. Fabiano Machado Dias Eduardo Wolak

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

DESENVOLVIMENTO DE SOFTWARE

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

EXEMPLOS DE COMANDOS NO SQL SERVER

Disciplina: Unidade V: Prof.: Período:

APLICATIVO PARA CÁLCULO DE MÉTRICA DE SOFTWARE EM CÓDIGO-FONTE PL/SQL

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

trigger insert, delete, update

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

Introdução ao SQL. O que é SQL?

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

O que são Bancos de Dados?

Banco de Dados. Prof. Antonio

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Linguagem de Consulta Estruturada SQL- DML

Programação Básica em Arduino Aula 2

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

SQL Structured Query Language

DESENVOLVIMENTO DE SOFTWARE

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.


SQL Server Ferramenta de administração. SQL Server Management Studio. 1º passo conectar ao banco de dados 2ª Query (consulta) usando SQL

1.6. Tratamento de Exceções

MANUAL INSTALAÇÃO WEB SERVICE

Persistência de Dados

Principais Comandos SQL Usados no MySql

Integridade dos Dados

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Prof.: Clayton Maciel Costa

Linguagem SQL Sub-linguagem DDL

Treinamento. Sumário

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Transcrição:

Faculdades Network Oracle PL/SQL Overview Prof. Edinelson

PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade no acesso a banco de dados obtidas via SQL. PL/SQL é proprietária da Oracle

PL/SQL É uma extensão da linguagem SQL e que incorpora recursos procedurais à mesma. Variáveis e tipos Estruturas de Controle Stored procedures Procedures e functions Packages Tratamento de erros As instruções SQL podem ser utilizadas normalmente nos programas e blocos PL/SQL.

Pode-se escrever programas e criar bibliotecas que podem ser reutilizadas em diferentes ambientes.

Benefícios Os programas podem ser transportados para qualquer ambiente (SO ou plataforma) que suporte o servidor Oracle e PL/SQL, ou seja, os programas PL/SQL podem ser executados em qualquer lugar onde o servidor Oracle está rodando.

Ambiente Servidor Oracle 10g Cliente SQL Plus SQL Developer

Estrutura de um bloco PL/SQL DECLARE -- declarações BEGIN -- instruções END;

Estrutura de um bloco PL/SQL DECLARE (opcional) - Declarações de variáveis, constantes, cursores e exceções definidas pelo usuário BEGIN (obrigatório) - Instruções SQL - Instruções/comandos PL/SQL EXCEPTION (opcional) - Ações a serem desempenhadadas quando ocorrem erros END; (obrigatório)

Pode existir bloco dentro de bloco Blocos PL/SQL

Declaração de variáveis

Uso de variáveis Armazenamento temporário Manipulação de valores armazenados Reutilização Facilidade de manutenção

Manipulando Variáveis em PL/SQL Declarar e inicializar as variáveis na seção declare. Atribuir novos valores às variáveis na seção executável. Passar valores aos blocos PL/SQL através de parâmetros (variáveis de ligação). Ver os resultados pelas variáveis de saída (variáveis do ambiente de chamada).

Variáveis PL/SQL Variáveis PL/SQL: Escalar (valores únicos =>char, varchar2, number, date, etc) Composta (registros) Referência (ponteiros) LOB (objetos grandes) (especificam a localização de objetos grandes. Ex: imagens) Variáveis Não-PL/SQL: bind or host variables Usadas para passar valores obtidos durante a execução de PL/SQL para o ambiente SQL*Plus

Tipos de variáveis

Tipos de dados escalares básicos CHAR [(tam máximo)] VARCHAR2 (tam máximo) LONG LONG RAW Number [(precisão,casas decimais)] BOOLEAN (true, false, null) DATE TIMESTAMP BINARY_INTEGER e PLS_INTEGER (requer menos espaço de armazenamento que NUMBER)

Declaração e atribuição Delimitada por ;

PL/SQL Declaração de Variáveis Cada variável deve ser declarada seguida de seu tipo, isto é, não é possível reaproveitar uma declaração de tipo. Ex.: Correto: salario_anual Number(5,2); salario_mensal Number(5,2); dta_nasc Date := Sysdate; Errado: salario_anual, salario_mensal Number(5,2);

Regras de nomeação Duas variáveis podem ter o mesmo nome, contanto que elas estejam em blocos diferentes. O nome da variável não deve ser igual ao nome das colunas de tabela usado no bloco.

Constantes A declaração de constantes é idêntica a de variáveis; com um adendo, a utilização da palavra CONSTANT. Ex.: novopreco CONSTANT real :=3.54;

Inicialização e palavras chave Operador de atribuição ( := ) Palavra chave DEFAULT Restrição NOT NULL

Mais exemplos

PL/SQL Declaração de Variáveis O atributo %Type permite que se utilize: O tipo de outra variável anteriormente declarada O tipo de uma coluna de uma tabela Ex: v_ultimo_nome v_prim_nome Func.nome%Type; v_ultimo_nome%type;

Vamos analisar o exemplo

Exemplo1.sql Testando - 1º. Exemplo Set serveroutput on DECLARE v_inv_value number(10,2); v_price number(8,2) := 10.25; v_quantity number(8,0) := 10; BEGIN v_inv_value := v_price * v_quantity; dbms_output.put('o valor é '); dbms_output.put_line(v_inv_value); END; /

Atenção PL/SQL not designed for user interface programming

Estruturas de Controle IF / Then / Else IF / Then / Elsif

Controlando o Fluxo de Execução PL/SQL Pode-se alterar o fluxo lógico de instruções usando estruturas para controle de loop e instruções IF condicionais. Instruções IF condicionais: IF-THEN-END IF IF-THEN-ELSE-END IF IF-THEN-ELSIF-END IF

Instrução IF

Instrução IF

Instrução IF

Instruções IF-THEN-ELSE

Instruções IF-THEN-ELSE

If Var1 > 10 then Var2 := Var1 + 20 ; Else Var2 := Var1 * Var1 ; End If ; If Var1 > 10 then Var2 := Var1 + 20 ; Else If Var1 between 7 and 8 then Var2 := 2 * Var1; Else Var2 := Var1 * Var1 ; End If ; End If ;

PL/SQL ESTRUTURA DA LINGUAGEM CARACTERES SUPORTADOS Todo alfabeto maiúsculo e minúsculo Algarismos de 0 a 9 Símbolos especiais: ( ) + - * / < > =! ~ ; : @ %, # & $ _ { }? [ ]. OPERADORES ARITMÉTICOS + Adição - Subtração * Multiplicação / Divisão ** Exponenciação OPERAÇÕES RELACIONAIS < > Diferente > Maior ^ = Diferente < Menor! = Diferente > = Maior Igual = Igual < = Menor Igual

Controle Interativo

Controle Interativo: Instruções Loop

Loop Básico

Loop Básico

Loop WHILE

Loop WHILE

Loop FOR

Loop FOR - Exemplo

Loop FOR

Diretrizes para o uso de Loops Use um Loop básico quando os comandos dentro do mesmo precisam ser executados ao menos uma vez Use um While se a condição deve ser avaliada primeiro Use o FOR quando você conhece a quantidade de iterações

Começando a programar em PL/SQL Exemplo2.sql: Criação da tabela teste Create table teste (num number(4), data date, observação varchar2(100));

Exemplo3.sql Começando a programar em PL/SQL declare cont int:=0; begin for cont in 1..10 loop insert into teste values (cont, sysdate, 'Numero ' cont); end loop; end;

exemplo4.sql Exemplo do comando While declare cont int:=0; begin delete from teste; while cont <= 5 loop insert into teste values (cont, sysdate, 'Numero ' cont); cont:=cont+1; end loop; end;

exemplo5.sql Mais um exemplo. declare cont int:=0; Begin delete teste; for cont in 1..10 loop if mod(cont,2) = 0 then insert into teste values (cont, sysdate, 'PAR'); else insert into teste values (cont, sysdate, 'IMPAR'); end if; end loop; end;

Instruções SQL em PL/SQL

Select em PL/SQL Extrair apenas uma linha de dados de um banco de dados usando o comando SELECT. Fazer alterações nas linhas no banco de dados usando os comandos DML. Comportamento de uma transação (COMMIT, ROLLBACK ou SAVEPOINT) em PL/SQL.

Select em PL/SQL

Select em PL/SQL

Select em PL/SQL

Insert

Cursores Cursores são trechos alocados de memória destinados a processar as declarações SELECT. Podem ser definidos pelo próprio PL/SQL, chamados de Cursores Implícitos, ou podem ser definidos manualmente, são os chamados de Cursores Explícitos.

Cursores Explícitos Esta técnica exige que o cursor seja declarado manualmente na seção DECLARE, e deve conter somente declarações SELECT. Para a sua utilização os seguintes passos devem ser observados: 1. Declarar o Cursor 2. Abrir o Cursor ( Preparar para sua utilização ) Open 3. Buscar os dados Fetch 4. Liberar memória após o uso ( Fechar o Cursor ) Close

Cursores Explícitos

Cursores Explícitos

Declarando o Curso

Exemplo Exemplo6.sql DECLARE v_empno employees.employee_id%type; v_ename employees.last_name%type; CURSOR emp_cursor IS SELECT employee_id, last_name FROM employees; BEGIN OPEN emp_cursor; FOR i IN 1..10 LOOP FETCH emp_cursor INTO v_empno, v_ename; DBMS_OUTPUT.PUT_LINE (TO_CHAR(v_empno) ' ' v_ename); END LOOP; END; /

Exemplo7.sql Cursor Exemplo DECLARE CURSOR emp_cursor IS SELECT employee_id, last_name FROM employees; emp_record emp_cursor%rowtype; BEGIN OPEN emp_cursor; LOOP FETCH emp_cursor INTO emp_record; EXIT WHEN emp_cursor%notfound; INSERT INTO temp_list (empid, empname) VALUES (emp_record.employee_id, emp_record.last_name); END LOOP; COMMIT; CLOSE emp_cursor; END; /

Procedures Uma procedure nada mais é do um bloco PL/SQL nomeado. A grande vantagem sobre um bloco PL/SQL anônimo é que pode ser compilado e armazenado no banco de dados como um objeto de schema. Graças a essa característica as procedures são de fácil manutenção, o código é reutilizável e permitem que trabalhemos com módulos de programa. Uma procedure é, então, um bloco PL/SQL nomeado que pode aceitar argumentos (também chamado de parâmetros) e pode ser chamada por um programa, uma sessão SQL ou uma trigger.

Sintaxe: Exemplo: Procedimentos CREATE [OR REPLACE] PROCEDURE procedure_name (parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, ) IS AS PL/SQL Block SQL> CREATE OR REPLACE PROCEDURE raise_salary 2 (v_id in emp.empno%type) 3 IS 4 BEGIN 5 UPDATE emp 6 SET sal = sal * 1.1 7 WHERE empno = v_id; 8 END raise_salary; 9 / Executar: SQL> EXECUTE raise_salary (7369) PL/SQL> raise_salary(7369)

Sintaxe: Funções CREATE [OR REPLACE] FUNCTION function_name (parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, ) RETURN datatype IS AS PL/SQL Block Exemplo: SQL> CREATE OR REPLACE FUNCTION get_sal 2 (v_id IN emp.empno%type) 3 RETURN NUMBER 4 IS v_salary emp.sal%type :=0; 5 BEGIN 6 SELECT sal INTO v_salary 7 FROM emp WHERE empno = v_id; 8 RETURN (v_salary); 9 END get_sal; 10 /