Вы находитесь на странице: 1из 17

UNINOVE Programao para Banco de Dados Oracle PL/SQL

Prof. Marcelo Bianchi Aula 01 Conceitos Bsicos

Oracle PL/SQLa
1. CONCEITOS DE PROGRAMAO PARA BANCO DE DADOS: INTRODUO AO PL/SQL Linguagem de programao: Procedural Language/Stuctured Query Language Principais recursos oferecidos pela linguagem: Executar comandos SQL para manipular dados nas tabelas Criar constantes e variveis Criar cursores para tratar o resultado de uma consulta Criar registros para guarda o resultado de um cursor ou campo de tabela Tratar erros Utilizar comandos de controle (if, if-then-else, case) e repetio (loop, for, while)

Vantagens:
Versatilidade Portabilidade Integrao com o SGBD (Sistema Gerenciador de Banco de Dados) Capacidade procedural (comandos de controle e repetio) Reduo de trfego de rede Rotinas PL/SQL podem ser desenvolvidas com diversas ferramentas: SQL*Plus SQL*Plus Worksheet Oracle Forms etc.

Estrutura de um bloco PL/SQL:


DECLARE Inicializaes, declarao de constantes, variveis e cursores BEGIN Comandos SQL, estruturas de programao e outros blocos PL/SQL BEGIN ... END; EXCEPTION (opcional) Tratamento de excees, emisso de mensagens END;

IMPORTANTE:
Para visualizar a sada no SQL*Plus faa a seguinte alterao: SET SERVEROUTPUT ON

DECLARAES
Na rea DECLARE podemos declarar: constantes variveis cursores estruturas tabelas

Tipos de Dados:

Tipos de Dados:
Tipos compostos: RECORD TABLE Tipos referenciados: REF CURSOR

CONSTANTES E VARIVEIS
CONSTANTES Para declaraes de constantes, a palavra CONSTANT deve aparecer antes do tipo de dado e a seguir utiliza-se o operador := para atribuir-lhe um valor. Exemplo: DECLARE pi CONSTANT NUMBER(9,7) := 3.1415927; ... BEGIN ... END; /

VARIVEIS
As variveis so inicializadas de maneira similar s constantes: declarando-se o tipo e atribuindo-lhe um valor. Variveis no inicializadas explicitamente recebem o valor NULL. No necessrio inicializar uma varivel com valor NULL. Pode-se aplicar a restrio NOT NULL a uma varivel. Neste caso ela dever ser inicializada. Exemplos: v1 NUMBER(4):= 1; v2 NUMBER(4):= DEFAULT 1; v3 NUMBER(4) NOT NULL:= 1; Podemos atribuir valores s variveis de duas maneiras: Utilizando o operador de atribuio: total := quant * valor; Utilizando um comando SELECT com a clusula INTO: SELECT ra_aluno, nome_aluno INTO ra, aluno FROM aluno;

HERANA DE TIPO E TAMANHO


As constantes e variveis podem herdar o tipo de outras variveis, de colunas ou at da linha inteira de uma tabela. Desta forma, diminuem-se as manutenes oriundas nas alteraes realizadas nas colunas de tabelas (ex: tamanho da coluna). Herdando o tipo de uma varivel previamente declarada: nome_da_variavel_2 nome_da_variavel_1%Type; Herdando o tipo de uma coluna de uma tabela: nome_da_variavel nome_da_tabela.nome_da_coluna%Type; Herdando o tipo de uma linha inteira de uma tabela: nome_da_variavel nome_da_tabela%Rowtype;

ESCOPO DE VARIVEIS
Variveis definidas dentro de um bloco sero locais para esse bloco e globais para os subblocos. No sero reconhecidas em outros blocos isolados.

COMANDOS SQL DENTRO DE UM BLOCO PL/SQL


Comandos DML (SELECT, INSERT, UPDATE e DELETE) podem ser utilizados dentro de um bloco PL/SQL. O comando SELECT dever receber obrigatoriamente a clusula INTO para que o resultado seja armazenado em variveis e dever retornar apenas uma linha. Caso mais de uma linha seja retornada, apresentar o erro: too_many_rows e se no retornar nenhuma linha, apresentar o erro: no_data_found.

Exemplo:
CREATE TABLE ALUNO ( RA NUMBER(5), NOME VARCHAR2(40)); INSERT INTO ALUNO VALUES (1,'ANTONIO'); INSERT INTO ALUNO VALUES (2,'BEATRIZ'); DECLARE V_RA ALUNO.RA%TYPE; V_NOME ALUNO.NOME%TYPE; BEGIN SELECT RA, NOME INTO V_RA, V_NOME FROM ALUNO WHERE RA=1; DBMS_OUTPUT.PUT_LINE(V_RA ||' - '|| V_NOME); END; / 1 - ANTONIO Nota: Utilizamos || para concatenao.

Exerccios:
1. Alterar a clusula WHERE acima para: WHERE RA=1 OR RA=2 e verificar o resultado. O comando SELECT retorna mais de uma linha, por isso exibida a mensagem: ORA-01422: a extrao exata retorna mais do que o nmero solicitado de linhas 2. Alterar a clusula WHERE acima para: WHERE RA=3 e verificar o resultado. O comando SELECT no retorna nenhuma linha, por isso exibida a mensagem: ORA-01403: dados no encontrados 3. Alterar a clusula WHERE acima para: WHERE RA=&RA_DO_ALUNO. Entre o valor para ra_do_aluno: 4. Inserir os seguintes valores na tabela aluno: ra=5, nome='DANIEL'. BEGIN INSERT INTO ALUNO (RA,NOME) VALUES (5,'DANIEL'); END; /

Exerccios
5. Alterar o nome do aluno cujo RA=5 para 'ERNESTO'. BEGIN UPDATE ALUNO SET NOME='ERNESTO' WHERE RA=5; END; / 6. Excluir da tabela o aluno cujo RA=5. BEGIN DELETE FROM ALUNO WHERE RA=5; END; /

Obrigado !
FTP Site: http://www.marcelodebianchi.com

Email: marcelodebianchi@gmail.com

Вам также может понравиться