A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

III – Oracle10g Funções que Manipulam Apontadores.

Apresentações semelhantes


Apresentação em tema: "III – Oracle10g Funções que Manipulam Apontadores."— Transcrição da apresentação:

1 III – Oracle10g Funções que Manipulam Apontadores

2 Tabelas Híbridas São tabelas em que colunas podem ser dos novos tipos nativos –REF –VARRAY –NESTED TABLE –Tipo definido pelo usuário Note que Tabela Híbrida  –Tabelas atômicas da disciplina BD-I –“Object tables”

3 Regra de Integridade de Escopo Pode ser necessário declarar que um valor REF deva conter somente referências a objetos de uma “object table” específica –REF com escopo (“scoped REF”) Exemplo: tabela híbrida pessoas CREATE TABLE pessoas ( id NUMBER(4), nome VARCHAR2(60), ref_endereco REF endereço SCOPE IS endereços, fones tabela_de_fones) NESTED TABLE fones STORE AS fones_ntab

4 CREATE INDEX meu_indice ON pessoas (ref_endereco) SELECT id FROM pessoas p WHERE p.ref_endereco.estado = ‘PB’ Indexação de Colunas REF com Escopo Somente colunas REF com escopo podem ser indexadas Obs: Índices servem para melhorar o tempo de resposta das consultas

5 Funções com REF -- Tratamento de OIDs SQL> CREATE TYPE emp AS OBJECT 2 (mat NUMBER, nome VARCHAR(20), salario NUMBER) 3 / Tipo criado. SQL> CREATE TABLE emps OF emp 2 (PRIMARY KEY (mat)) 3 / Tabela criada. Obs: Exemplos com a ferramenta SQLPlus

6 SQL> INSERT INTO emps VALUES (10, 'Joao', 5000) 2 / 1 linha criada. SQL> -- Funcao REF (retorna um valor do tipo REF) SQL> SELECT REF(e) FROM emps e 2 / REF(E) 000028020922C58AF8D1054214AA0129C4B2F76373609AE5 0203BB46158870504B45770248004084A00000

7 SQL> CREATE TABLE tab_depto 2 (cod NUMBER, 3 gerente REF emp SCOPE IS emps) 4 / Tabela criada. SQL> INSERT INTO tab_depto 2 SELECT 10, REF(e) FROM emps e WHERE e.mat = 10 3 / 1 linha criada. SQL> -- Funcao DEREF SQL> SELECT DEREF(d.gerente) FROM tab_depto d WHERE d.cod = 10 2 / DEREF(D.GERENTE)(MAT, NOME, SALARIO) EMP(10, 'Joao', 5000)

8 SQL> SELECT DEREF(d.gerente).nome FROM tab_depto d 2 / DEREF(D.GERENTE).NOM -------------------- Joao SQL> SELECT d.gerente.nome FROM tab_depto d 2 / GERENTE.NOME -------------------- Joao A segunda forma é melhor do que a primeira

9 SQL> -- Funcao VALUE SQL> SELECT VALUE(e) FROM emps e 2 / VALUE(E)(MAT, NOME, SALARIO) EMP(10, 'Joao', 5000)

10 SQL> SELECT VALUE(e).nome FROM emps e 2 / VALUE(E).NOME Joao SELECT e.nome FROM emps e NOME João A segunda forma é melhor do que a primeira

11 REF WITH ROWID create type teste as object (x number) / tipo criado. create type teste2 as object (y REF teste) / tipo criado. create table testes of teste / tabela criada. create table testes2 of teste2 ( y WITH ROWID) / tabela criada.


Carregar ppt "III – Oracle10g Funções que Manipulam Apontadores."

Apresentações semelhantes


Anúncios Google