Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instruções SELECT em PL/SQL Objetivos da Aula: 3o PERIODO– Banco de Dados Programação de BD Professora: Juliana 11/09/2015 Instruções SQL em PL/SQL Extrair 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. Controlar uma transação com o comando COMMIT e ROLLBACK . Instruções SELECT em PL/SQL Recuperar dados do banco de dados com SELECT. Sintaxe SELECT select_list INTO {variable_name[, variable_name]... | record_name} FROM tabela WHERE condição; Instruções SELECT em PL/SQL A cláusula INTO é necessária. SET SERVEROUTPUT ON DECLARE v_deptno NUMBER(2); v_loc VARCHAR2(15); BEGIN SELECT deptno, loc INTO v_deptno, v_loc FROM dept WHERE dname = 'SALES'; DBMS_OUTPUT.PUT_LINE('O Código do Departamento é ' || v_deptno|| ‘ e a sua localização é : ‘ || v_loc); END; / Recuperando Dados em PL/SQL – Retornar o total de salários de todos os funcionários no departamento especificado. Exemplo DECLARE v_sum_sal emp.sal%TYPE; v_deptno NUMBER NOT NULL := 30; BEGIN SELECT SUM(sal) -- group function INTO v_sum_sal FROM emp WHERE deptno = v_deptno; dbms_output.put_line(‘A soma dos salários é: ‘||v_sum_sal); END; / Convenções para Nomeação Usar uma convenção de nomeação para evitar ambiguidades na cláusula WHERE. Os identificadores e as colunas de banco de dados devem ter nomes diferentes. Podem surgir erros de sintaxe, pois o PL/SQL verifica primeiro a coluna no banco de dados.. Convenções para Nomeação DECLARE v_orderdate ord.orderdate%TYPE; v_shipdate ord.shipdate%TYPE; v_ ordid ord.ordid%TYPE := 601; BEGIN SELECT orderdate, shipdate INTO v_orderdate, v_ shipdate FROM ord WHERE ordid = v_ordid; END; / Recuperar a data da ordem de compra e de entrega para a ordem especificada. Alterar as tabelas de banco de dados usando os comandos DML: INSERT UPDATE DELETE INSERT UPDATE DELETE Manipulando Dados Usando o PL/SQL Inserindo Dados Adicionar informações sobre novos funcionários na tabela EMP. Exemplo BEGIN INSERT INTO emp(empno, ename, job, deptno) VALUES(empno_sequence.NEXTVAL, 'HARDING','CLERK', 10); END; Inserção de Dados declare v_ename emp.ename%type := ‘JOÃO'; v_job emp.job%type := ‘VENDEDOR'; v_deptno emp.deptno%type := 10; begin insert into emp(empno, ename, job, deptno) values (empno_sequence.nextval, v_ename, v_job, v_deptno); end; / Atualizando Dados Aumentar o salário de todos os funcionários na tabela EMP e que sejam Analistas (Analysts). Exemplo DECLARE v_sal_increase emp.sal%TYPE := 2000; BEGIN UPDATE emp SET sal = sal + v_sal_increase WHERE job = 'ANALYST'; END; Atualizando Dados DECLARE v_sal_increase emp.sal%TYPE := 2000; BEGIN UPDATE emp SET sal = sal + v_sal_increase WHERE job = 'ANALYST'; END; / Deletando Dados Deletar linhas que pertençam ao departamento 10 da tabela EMP. Exemplo DECLARE v_deptno emp.deptno%TYPE := 10; BEGIN DELETE FROM emp WHERE deptno = v_deptno; END; Exclusão de Dados DECLARE v_deptno emp.deptno%TYPE := 10; BEGIN DELETE FROM emp WHERE deptno = v_deptno; END; / Instruções COMMIT e ROLLBACK Iniciar uma transação com o primeiro comando DML para seguir uma instrução COMMIT ou ROLLBACK. Usar instruções SQL como, por exemplo, COMMIT e ROLLBACK, para finalizar uma transação explicitamente. Exemplo declare v_ename emp.ename%type := ‘JOÃO'; v_job emp.job%type := ‘VENDEDOR'; v_deptno emp.deptno%type := 10; begin insert into emp(empno, ename, job, deptno) values (empno_sequence.nextval, v_ename, v_job, v_deptno); commit; insert into emp(empno, ename, job, deptno) values (empno_sequence.nextval, v_ename, v_job, v_deptno); rollback; end; /
Compartilhar