Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Cursor Professor Esp. Diego André Sant’Ana
Disciplina: Banco de Dados II professordiegosantana.wordpress.com
2
O que é um Cursor? Um cursor representa uma tabela temporariamente armazenada em memória. O objetivo do nosso artigo é listar todos os telefones de um determinado usuário utilizando cursor no banco de dados PostgreSQL.
3
O que é um Cursor? Um cursor representa uma tabela temporariamente armazenada em memória. O objetivo do nosso artigo é listar todos os telefones de um determinado usuário utilizando cursor no banco de dados PostgreSQL.
4
Modelo Fonte: stgresql/utilizando-cursores-no-postgresql/
5
Script CREATE SCHEMA exemplo;
CREATE TABLE exemplo.usuario ( usuario_id SERIAL NOT NULL, nome CHARACTER VARYING(100) NOT NULL, data_nasc DATE NOT NULL, CONSTRAINT PK_usuario PRIMARY KEY (usuario_id) );
6
Script CREATE TABLE exemplo.telefone ( usuario_id INTEGER NOT NULL, fone_id INTEGER NOT NULL, ddd CHARACTER VARYING(2) NOT NULL, numero CHARACTER VARYING(10) NOT NULL, CONSTRAINT PK_telefone PRIMARY KEY (usuario_id,fone_id) ); ALTER TABLE exemplo.telefone ADD CONSTRAINT usuario_telefone FOREIGN KEY (usuario_id) REFERENCES exemplo.usuario (usuario_id);
7
Script INSERT INTO exemplo.usuario(nome, data_nasc) VALUES
('Maria', ' '), ('Pedro', ' '), ('Ana', ' '); INSERT INTO exemplo.telefone(usuario_id, fone_id, ddd, numero) VALUES (1, 1,'67', ' '), (1, 2,'67', ' '), (2, 1,'67', ' '), (2, 2,'67', ' '), (3, 1,'67', ' ') ;
8
Criando uma função com cursor
CREATE OR REPLACE FUNCTION exemplo.cur_telefones(integer) RETURNS SETOF exemplo.telefone AS $BODY$ DECLARE --parametros p_usuario_id ALIAS FOR $1; --cursor reg exemplo.telefone%ROWTYPE; BEGIN --busca os telefones do usuario informado FOR reg in SELECT t.usuario_id, t.fone_id, t.ddd, t.numero FROM exemplo.telefone t WHERE t.usuario_id = p_usuario_id LOOP RETURN NEXT reg; END LOOP; RETURN; END; $BODY$ LANGUAGE plpgsql VOLATILE;
9
Criando TYPE A criação de um tipo é necessária quando não temos nenhuma tabela que representa o tipo de retorno de uma busca. CREATE TYPE exemplo.type_cur_telefones AS ( nome character varying(100) , ddd character varying(2) , telefone character varying(10) );
10
Criando uma função utilizando tipo como retorno
DROP FUNCTION exemplo.cur_telefones(integer); CREATE OR REPLACE FUNCTION exemplo.cur_telefones(integer) RETURNS SETOF exemplo.type_cur_telefones AS $BODY$ DECLARE --parametros p_usuario_id ALIAS FOR $1; --cursor reg exemplo.type_cur_telefones%ROWTYPE; BEGIN --busca os telefones do usuario informado FOR reg in SELECT u.nome, t.ddd, t.numero FROM exemplo.usuario u INNER JOIN exemplo.telefone t ON(u.usuario_id = t.usuario_id) WHERE t.usuario_id = p_usuario_id LOOP RETURN NEXT reg; END LOOP; RETURN; END; LANGUAGE plpgsql VOLATILE;
11
REFERÊNCIAS sql/utilizando-cursores-no-postgresql/
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.