16
Banco de Dados PL-SQL Prof. André Yoshimi Kusumoto Prof. André Yoshimi Kusumoto [email protected] [email protected]

20091029 - PL-SQL

Embed Size (px)

Citation preview

Page 1: 20091029 - PL-SQL

Banco de Dados

PL-SQLPL-SQL

Prof. André Yoshimi KusumotoProf. André Yoshimi Kusumoto

[email protected][email protected]

Page 2: 20091029 - PL-SQL

PL-SQLPL-SQL

SQLSQLLinguagem de comando utilizada para comunicação com o BD;Linguagem de comando utilizada para comunicação com o BD;

SQL*PLUSSQL*PLUSFerramenta Oracle que reconhece e executa padrões PL/SQL e Ferramenta Oracle que reconhece e executa padrões PL/SQL e

Prof. André Y. Kusumoto - [email protected]

Ferramenta Oracle que reconhece e executa padrões PL/SQL e Ferramenta Oracle que reconhece e executa padrões PL/SQL e SQL;SQL;

PL/SQLPL/SQLLinguagem procedural que estende o SQL adicionando Linguagem procedural que estende o SQL adicionando aplicações lógicas.aplicações lógicas.

Page 3: 20091029 - PL-SQL

PL-SQL

Interação SQL e SQL*Plus

PL-SQL

Interação SQL e SQL*Plus

SQL*Plus Server

Oracle

Prof. André Y. Kusumoto - [email protected]

Page 4: 20091029 - PL-SQL

PL-SQLPL-SQL

Linguagem de processamento de transações.Linguagem de processamento de transações.Extensão da Structured Query Language (SQL)Extensão da Structured Query Language (SQL)Permite manipular dados e comandos SQL dentro de blocos Permite manipular dados e comandos SQL dentro de blocos estruturados, e unidades de código proceduralestruturados, e unidades de código procedural

Prof. André Y. Kusumoto - [email protected]

estruturados, e unidades de código proceduralestruturados, e unidades de código procedural

Alguns Benefícios:Alguns Benefícios:Desenvolvimento modularizadoDesenvolvimento modularizadoUso de blocos aninhadosUso de blocos aninhadosDeclaração de identificadores (variáveis, constantes, Declaração de identificadores (variáveis, constantes, cursores)cursores)Uso de controle de estruturas (condicionais, loops)Uso de controle de estruturas (condicionais, loops)

Page 5: 20091029 - PL-SQL

PL-SQL

Melhorando Performance

PL-SQL

Melhorando Performance

Grupo de comandos SQL dentro de um bloco reduz tráfego Grupo de comandos SQL dentro de um bloco reduz tráfego de redede rede

SQL

Prof. André Y. Kusumoto - [email protected]

Aplicação

Aplicação

Outros

Oracle

SQL

SQL

SQL

If .... Then

SQL

Else

SQL

End if

Page 6: 20091029 - PL-SQL

PL-SQL

Declarando uma variável

PL-SQL

Declarando uma variávelvar[iable] var[iable] datatypedatatype

DATATYPES PRINCIPAISVARCHAR2(comprimento) - Conjunto de caracteres (string) de tamanho variável. O

comprimento varia entre um máximo de 2000 caracteres e um mínimo de 1.

Prof. André Y. Kusumoto - [email protected]

comprimento varia entre um máximo de 2000 caracteres e um mínimo de 1. NUMBER(p, e) - Representa um número com uma precisão de p e uma escala de e. A

precisão p pode variar entre 1 e 38 e a escala e entre –84 e 127. LONG - Conjunto de caracteres de tamanho variável com até 2 gigabytes (231-1 bytes). DATE - Um valor de data entre 1 de Janeiro de 4712 AC e 31 de Dezembro de 4712 DC. CHAR(comprimento) - Conjunto de caracteres de tamanho fixo. O comprimento máximo

é de 255 bytes e o comprimento por omissão é de 1 byte. BLOB - Tipo de dados para conteúdos binários até 4 Gigabytes

Page 7: 20091029 - PL-SQL

PL-SQL

Estrutura do Bloco

PL-SQL

Estrutura do Bloco

DECLARE DECLARE -- OpcionalOpcionalVariáveis, constantes, cursoresVariáveis, constantes, cursores

BEGIN BEGIN -- MandatórioMandatório

Prof. André Y. Kusumoto - [email protected]

BEGIN BEGIN -- MandatórioMandatório-- Estrutura SQLEstrutura SQL-- Controle PL/SQLControle PL/SQL

EXCEPTION EXCEPTION -- OpcionalOpcional-- Ação a executar no caso de erroAção a executar no caso de erro

END; END; -- MandatórioMandatório

Page 8: 20091029 - PL-SQL

PL-SQL

Construções

PL-SQL

Construções

Prof. André Y. Kusumoto - [email protected]

Construção Descrição

Blocos Anônimos Bloco PL/SQL embutido em alguma aplicação

Stored | Application Procedure ou Função

Bloco PL/SQL nomeado que aceita parâmetros e pode receber várias chamadas de execução

Nota:Nota: Uma função é semelhante a uma procedure, exceto que a primeira deve retornar um Uma função é semelhante a uma procedure, exceto que a primeira deve retornar um valor enquanto que procedures não.valor enquanto que procedures não.

Procedure ou Função várias chamadas de execução

Triggers de Banco Bloco PL/SQL associado a tabelas do Banco de Dados e que disparam automaticamente

Triggers de Aplicação Bloco PL/SQL associado a algum evento da aplicação

Page 9: 20091029 - PL-SQL

PL-SQL

Criando uma Procedure

PL-SQL

Criando uma Procedure

Prof. André Y. Kusumoto - [email protected]

Sintaxe:Sintaxe:

PROCEDURE nomePROCEDURE nome

[(parâmetros,...)] [(parâmetros,...)] ------ parâmetros formaisparâmetros formais

ISISISIS

<bloco pl/sql><bloco pl/sql>

END nome;END nome;

Sintaxe de parâmetrosSintaxe de parâmetrosparâmetros [IN | OUT | IN OUT] datatypeparâmetros [IN | OUT | IN OUT] datatype

Page 10: 20091029 - PL-SQL

PL-SQL

Criando uma Procedure

PL-SQL

Criando uma Procedure

Prof. André Y. Kusumoto - [email protected]

Parâmetro Descrição

IN Argumento padrãoPassa um valor de ambiente de chamada para dentro da Procedure

OUT Deve ser especificadoOUT Deve ser especificadoRetorna um valor de dentro da procedure para o ambiente de chamada

IN OUT Deve ser especificadoPassa um valor de ambiente de chamada para dentro da Procedure e retorna um valor de dentro da procedure para o ambiente de chamada

Page 11: 20091029 - PL-SQL

PL-SQL

Criando uma Procedure

PL-SQL

Criando uma Procedure

Crie uma procedure para atualizar o salário de um Crie uma procedure para atualizar o salário de um empregado a ser especificado pelo usuário:empregado a ser especificado pelo usuário:

CREATE OR REPLACE PROCEDURE muda_salario

(v_cpf in number, v_novo_sal in number)

Prof. André Y. Kusumoto - [email protected]

(v_cpf in number, v_novo_sal in number)

is

begin

update empregados

set salario= v_novo_sal

where cpf = v_cpf;

commit;

end;

/

Page 12: 20091029 - PL-SQL

PL-SQL

Criando uma Função

PL-SQL

Criando uma Função

Prof. André Y. Kusumoto - [email protected]

Sintaxe:Sintaxe:

FUNCTION nomeFUNCTION nome

[(parâmetro,...)][(parâmetro,...)]

RETURN datatypeRETURN datatypeRETURN datatypeRETURN datatype

ISIS

<bloco pl/sql>;<bloco pl/sql>;

END nome;END nome;

Page 13: 20091029 - PL-SQL

PL-SQL

Criando uma Função

PL-SQL

Criando uma Função

Prof. André Y. Kusumoto - [email protected]

ExemploExemplo

function taxafunction taxa

(v_valor in number)(v_valor in number)

return numberreturn numberreturn numberreturn number

isis

beginbegin

return (v_valor * .7);return (v_valor * .7);

End;End;

Page 14: 20091029 - PL-SQL

PL-SQL

Prática

PL-SQL

Prática

Prof. André Y. Kusumoto - [email protected]

Crie a seguinte tabela Funcionario:Crie a seguinte tabela Funcionario:

CodFuncionario Long

Nome Varchar2(80)

Salario Number(10,2)

Desenvolva uma procedure que aumente os salários de todos os Desenvolva uma procedure que aumente os salários de todos os funcionários em 10%.funcionários em 10%.Criar uma função para calcular a área de uma circunferência Criar uma função para calcular a área de uma circunferência ((ππ.r²)..r²).

Salario Number(10,2)

Page 15: 20091029 - PL-SQL

Operador de ConcatenaçãoOperador de Concatenação

Representado por duas barras verticais( || )Representado por duas barras verticais( || )Junta colunas ou strings com outras colunas.Junta colunas ou strings com outras colunas.

Exemplo:Exemplo:

Prof. André Y. Kusumoto - [email protected]

Exemplo:Exemplo:> Select prenome || sobrenome as “Empregados”

from empregados;

Page 16: 20091029 - PL-SQL

•• Machado, Felipe Nery Rodrigues. Banco de Dados Machado, Felipe Nery Rodrigues. Banco de Dados -- Projeto e Projeto e Implementação, Érica, 2004, 1ª Edição.Implementação, Érica, 2004, 1ª Edição.•• SILBERSCHATZ, Abraham; KORTH, Henry e SUDARSHAN, S. SILBERSCHATZ, Abraham; KORTH, Henry e SUDARSHAN, S. Sistema de Banco de Dados Sistema de Banco de Dados –– São Paulo: MAKRON Books, 1999.São Paulo: MAKRON Books, 1999.

BibliografiaBibliografia

Prof. André Y. Kusumoto - [email protected]

Sistema de Banco de Dados Sistema de Banco de Dados –– São Paulo: MAKRON Books, 1999.São Paulo: MAKRON Books, 1999.•• HEUSER, Carlos Alberto. Projeto de Banco de Dados HEUSER, Carlos Alberto. Projeto de Banco de Dados –– Editora Editora Sagra Luzzatto, 2001, 4ª Edição.Sagra Luzzatto, 2001, 4ª Edição.

•• Notas de aula do Prof. Gustavo Henrique dos Santos Notas de aula do Prof. Gustavo Henrique dos Santos •• Silveira, José Silveira, José MarcosMarcos Barbosa da. Universidade Paulista, 2008.Barbosa da. Universidade Paulista, 2008.