SQL procedural – parte 2.

Slides:



Advertisements
Apresentações semelhantes
III – Oracle 9i Coleções.
Advertisements

Estudo de Caso, modelo Oracle 10g
Gerenciamento de Dados e Informação Estudo de caso – PL/SQL
ADO.NET (cont.). 1 Acesso a Bases de DadosADO.NET Namespace System.Data Modos de aceder à informação OLE DB – namespace System.Data.OleDb SQL - namespace.
Passagem de parâmetros por valor txtInOut1.Text = num1 txtInOut2.Text = num2 txtOut.Text = num3 End Sub Private Sub cmdVal_Click() Dim num1 As Integer,
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Triggers Marilde Santos.
Sequences Marilde Santos. O que são Sequences? Valores sequenciais podem ser gerados automaticamente pelo Oracle com o uso de sequences. A sequence gera.
Manipulação de Arquivos de Dados
VHDL Very High Speed Integrated Circuit Hardware Description Language Prof. Eduardo Todt 2008.
Prof. José Fernando Rodrigues Júnior Pacotes Material original: Profa. Elaine Parros Machado de Sousa SCC Bancos de Dados e Suas Aplicações.
SCC Bancos de Dados e Suas Aplicações
PL/SQL (Procedural Language/Structured Query Language)
SCC Bancos de Dados e Suas Aplicações
Procedimentos e Funções
Ronaldo Celso Messias Correia
Html5- Desenvolvendo Aplicações. Html5- Introdução a SQL Métodos OpenDatabase (utilizado para criar ou abrir uma Base de Dados); Transaction (permite.
FORTRAN 90 Denise Yumi Takamura.
SQL Procedural Junho/2006.
Elaboração de Consultas 3 de abril de Recuperação de Informação Cd_cliente CLIENTECONTATO Cd_cliente C1 C1 : Listar os clientes que tem contatos.
Subconsultas em SQL. Subconsulta Estrutura geral SELECT.... FROM.... WHERE [at] OPERADOR ( SELECT... FROM... [WHERE... ]) Declaração SELECT localizada.
Funções de Linha 17/04/06. Funções de Linha Gerar ou construir novo valor não existente na tabela inicial. Valor construído a partir de dados de uma ou.
Introdução à Consulta 24/3/06. Categorias de comandos DDL : estruturação de objetos de BD Ex. create table, drop index, alter table... DML: manipulação.
Funções de Linha 24/04/06. Funções de Linha Gerar ou construir novo valor não existente na tabela inicial. Valor construído a partir de dados de uma ou.
SQL-3. Novo contexto e necessidade de : Manipular imagens Outros tipos de dados além de texto e números Recuperação de dados mais complexos Níveis distintos.
Objeto de BD: visão Há 2 tipos de tabelas Tabela base
Sql-3 ( final ).
Teste Estrutural de Software
Banco de Dados Geográficos
CES-41 COMPILADORES Aulas Práticas
Formação de Administradores de Redes Linux LPI – level 1 SENAC TI Fernando Costa SQL (Structure Query Language)
Curso Técnico em Informática La Salle - Canoas
Organização de Sistemas de Computadores
Stored Procedure, Function and Trigger
Transporte Escolar Fluvial
Microsoft SQL Server 2008 SPARSE. Ambiente de teste Uma tabela é criada com 3 campos: CREATE TABLE [dbo].[Cliente_com_campos_basicos] ( [IdCliente] int.
PostgreSQL.
Usando Java no Oracle Por Edson Almeida Junior
Variáveis, Tipos de Dados e Constantes
Prof. Eduardo Mantovani Prof. Fábio de P. Santos AES 2007.
Exercícios de revisão.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 30 (1) Empacotamento de Dados em MPI Tópicos: Buffer de Mensagem Empacotamento/Desempacotamento.
PL/SQL, Procedures e Funções
Monitoria GDI Aula Prática
Equipe de monitoria Aula prática 3.  Caso de estudo  Igualando situações  Cursor  Function  Procedure  Trigger  Package  Surpresa...
Primeira aula de PL/SQL Parte II
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
Funções ou procedures Professor Esp. Diego André Sant’Ana
Cursor Professor Esp. Diego André Sant’Ana
III – Oracle 10g Coleções. Introdução Coleção: formada de objetos do mesmo tipo, cada um com um índice (posição) único dentro da coleção –NESTED TABLE.
III – O Modelo OR Estudo de Caso, modelo Oracle 10g.
III – Oracle 10g Herança.
Com coleções, cursor não é mais necessário
RT-EXPERT Artis Corp. C calling program RTSUB [rule set subroutine] RTSUB [rule set subroutine] RTSUB [rule set subroutine]... DSL Decision Support Language.
SEQUENCE, PROCEDURE, FUNÇÃO, TRIGGER
Monitoria GDI Aula Prática
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
CASE WHEN THEN ELSE END Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com.
Aula 13 - Triggers. Triggers no SGBD Postgres  Os Triggers (Gatilhos) são funções preparadas para serem disparadas no caso de alguma alteração ocorrer.
Banco de Dados II Prof: Márcio Soussa Curso de Sistemas de Informação Faculdades Jorge Amado.
2/6/2016 José Antônio da Cunha - CEFET - RN1 Programação de Banco de Dados Funções.
Transações George Azevedo da Silva José Antônio da Cunha.
Banco de Dados I Desenho de Bancos de dados Relacionales
BANCO DE DADOS Araújo Lima Out / 2017 Araújo.
BANCO DE DADOS Araújo Lima Outubro / 2017 Araújo.
Daniel Paulo SQL Server 2016 Módulo II Daniel Paulo
MS-SQL Server Structure Query Language
Transcrição da apresentação:

SQL procedural – parte 2

SQL Procedural Cursores Combinação com transações Tratamento de exceções

Plpgsql : cursor Tabela temporária armazenada em memória Criada por resultado de COMMIT, ROLLBACK, INSERT, SELECT , UPDATE, DELETE Contém registros afetados pelo comando q o criou Leitura de uma linha por vez Evitar sobrecarga de memória (N linhas de consulta) Postgres: Tipo refcursor

Plpgsql : cursor Literatura do Oracle : cursor implícito : dispensa tratamentos Explícito: apenas pelo SELECT

Declaração de cursor DECLARE curs1 refcursor; -- curs1 é um cursor não iniciado curs2 CURSOR FOR SELECT * FROM tab1 ; curs3 CURSOR (key integer) IS SELECT * FROM tab1 WHERE unique1 = key; curs1 refcursor (30) ;

Uso do cursor Declarar ( declare ) Abrir ( open ) Navegar/ Atribuir os valores ( fetch ) Fechar ( close ou fim de transação ) * Postgres: invocação de função com cursor deve ocorrer dentro de transação

Abrir cursor OPEN FOR SELECT OPEN cursor FOR SELECT query ; OPEN FOR EXECUTE OPEN cursor FOR EXECUTE query ; OPEN cursor com limite

Abrir cursor para SELECT Cursor sem limite ( cursor refcursor ) Consulta sem apóstrofo

create function cursorLerAluno(varchar) returns text as $$ declare c refcursor; nm aluno.nome%type; cur aluno.curriculo%type; begin OPEN c FOR SELECT nome, curriculo from aluno where num_matricula = $1; fetch c into nm, cur; close c; return nm || ','|| cur; end; $$ language 'plpgsql';

Abrir cursor para EXECUTE Cursor sem limite Palavra reservada EXECUTE EXECUTE pede string ( usar apóstrofo ) Situações de SQL dinâmico ( passagem dos parâmetros como tabela , comando ) Sintaxe OPEN cursor FOR EXECUTE query ;

create or replace function cursorLerAluno(varchar) returns text as $$ declare c refcursor; nm aluno.nome%type; cur aluno.curriculo%type; begin OPEN c FOR EXECUTE 'SELECT nome, curriculo from aluno where num_matricula ='|| $1; fetch c into nm, cur; close c; return nm || ','|| cur; end; $$ language 'plpgsql';

Abrir cursor OPEN FOR SELECT OPEN cursor FOR SELECT query ; OPEN FOR EXECUTE OPEN cursor FOR EXECUTE query ; OPEN cursor com limite

FETCH cursor FETCH direction [ count ] { IN | FROM } cursor direction ::= { FORWARD | BACKWARD | RELATIVE } count ::= { numrows | ALL | NEXT | PRIOR } Navegar no cursor

create or replace function teste() returns boolean as $$ declare c refcursor; reg aluno%rowtype; i integer; tot integer; begin OPEN c FOR SELECT * from aluno ; SELECT count(*) INTO tot from aluno; i:=1; FOR i IN 1..tot LOOP FETCH c INTO reg; raise notice '%', reg.nome ; raise notice '%', reg.num_matricula ; END LOOP; close c; RETURN FOUND; end; $$ language 'plpgsql'; BEGIN; SELECT teste(); COMMIT;

Chamada de função dentro de função BEGIN ... PERFORM suaFuncao([parametros]); END;

Tratamento de exceções RAISE NOTICE ‘%’, var ; ( mensagem) RAISE NOTICE ‘ texto qquer’; RAISE EXCEPTION ‘%’, var ; ( falha )

Bloco de exceção BEGIN comandos EXCEPTION WHEN condição THEN comandos de tratamento WHEN condição THEN comandos de tratamento END; Custo é alto, usar sse necessário

SETOF Retorno de conjunto de qualquer tipo Create function foo () returns SETOF integer ...

Exemplos da última aula Calcular a média de vl_total_mês pelo numero de clientes ( tabela cliente) create or replace function calculaMediaGanhoMes() returns float as $$ declare tot integer; media , vl_total real; begin select COUNT(*), SUM(vl_total_mes) INTO tot, vl_total from cliente; media := vl_total/ tot; RETURN media; end; $$ language 'plpgsql';

Exemplo com atributo TYPE create or replace function exibeDadosAluno ( varchar ) returns text as S$ declare nm aluno.nome%type ; mae dados_aluno.nome_pai%type; pai dados_aluno.nome_mae%type; mat ALIAS FOR $1; -- apelido para o parâmetro begin select aluno.nome, nome_pai, nome_mae into nm, pai, mae from aluno natural join dados_aluno where aluno.num_matricula like mat ; if FOUND Then return 'Aluno: ' || nm || ',' || 'Pai: ' || pai || ',' || 'Mãe: ' || mae ; else return 'nao achou ninguem com essa matricula'; end if; end; $$ LANGUAGE 'plpgsql';