Академический Документы
Профессиональный Документы
Культура Документы
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.
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;
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.
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