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

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

Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison.

Apresentações semelhantes


Apresentação em tema: "Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison."— Transcrição da apresentação:

1

2

3 Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison (Map e Order)

4 Métodos que possuem acesso aos dados da instância do objeto Self - representa a instância do tipo no qual o método é atualmente chamado Na declaração de um tipo são definidas as assinaturas dos métodos O corpo dos métodos deve ser criado em alguma linguagem de programação (PL/SQL, Java, C++)

5 CREATE TYPE T_PESSOA AS OBJECT ( NOME VARCHAR2(30), TELEFONE VARCHAR2(20), IDADE NUMBER(2), MEMBER FUNCTION GET_IDADE_PLUS RETURN NUMBER ); CREATE OR REPLACE TYPE BODY T_PESSOA AS MEMBER FUNCTION GET_IDADE_PLUS (INC NUMBER) RETURN NUMBER IS BEGIN RETURN SELF.IDADE + INC; END GET_IDADE_PLUS; END;

6 Método que cria uma nova instância para o objeto, atribuindo valores aos seus atributos. Trabalha com dados globais do tipo de objeto e não com a instância (não se utiliza a palavra-chave SELF) Todo object type possui um método construtor, que é implícito e definido pelo sistema O nome do método construtor é o mesmo do object type

7 CREATE TYPE Customer_typ AS OBJECT ( id NUMBER, name VARCHAR2(20), phone VARCHAR2(30) ); cust = Customer_typ(103, 'Ravi', ' ')

8 Valores de tipos de dados primitivos como CHAR ou REAL possuem uma ordem predefinida, permitindo compará-los Object type possui múltiplos atributos de diferentes tipos de dados, não possuindo um eixo definido de comparação Map Order

9 Permite comparar objetos, mapeando as instâncias dos objeto sem um dos tipos escalares DATE, NUMBER, VARCHAR2

10 CREATE TYPE Retangulo_tipo AS OBJECT ( larg NUMBER, comp NUMBER, MAP MEMBER FUNCTION area RETURN NUMBER ); CREATE TYPE BODY Retangulo_tipo AS MAP MEMBER FUNCTION area RETURN NUMBER IS BEGIN RETURN larg * comp; END area; END;

11 Realiza comparações object-to-object É função que possui um parâmetro declarado para outro objeto do mesmo tipo e retorna < 0, caso o objeto SELF seja menor que o objeto passado como argumento 0, caso sejam iguais > 0, caso o objeto SELF seja maior que o objeto passado como argumento

12

13 REF - Retorna referência OID(object id) a uma instância da object table Um objeto do tipo REF encapsula uma referência para um row object de um tipo de objeto especificado; O valor de um objeto do tipo REF é um ponteiro lógico para um row object.

14 Cadastre um sócio no banco e a relacione com o endereço cujo código é 1, supondo que o endereço foi criado previamente. INSERT INTO endereco (codigo_end, rua, cep, numero, bairro) VALUES (1,'a','123',2222,'espinheiro'); INSERT INTO socio (codigo, rg, nome, ref_endereco, tipo_socio, datacadastro)VALUES ( ,' ','coxinha', (select REF(e) from endereco e where e.codigo_end = 1),'titular',to_date('14/08/1986','dd/mm/yyyy'));

15 Selecionar todos os atributos de endereço que possuem alguma relação com sócio

16 DEREF - Retorna instância de objeto correspondente ao REF O operador DEREF executa a função oposta de REF recebe um valor de referência e retorna o valor de um row object. O DEREF toma como argumento o OID gerado para uma referência.

17 Faça uma consulta que retorno o endereço do socio com codigo select DEREF(s.ref_endereco) from socio s where s.codigo = ;

18 Mostre todas as informações do endereço cujo código está associado ao sócio com rg igual a

19 Verifica a validade de uma referência Exemplo: Mostre todos os socios que possuem endereços com referências inválidas. SELECT * FROM socio s WHERE s.ref_endereco IS DANGLING;

20 Mostre todos os sócios que possuem endereços válidos e que moram no espinheiro.

21 Melhor desempenho, pois fornece acesso direto ao objeto Exemplo: Tabela tb_socio_exemplo com referencia a endereço create table tb_socio_exemplo of tp_socio( codigo primary key, nome not null, ref_endereco with rowid references endereco );

22 Faça uma inserção na tabela acima com um endereço válido. Após a inserção tente remover o endereço.

23

24 TURMA ALUNOPROFESSOR 1 n 1 n

25 CREATE TYPE PROFESSOR_TYPE AS OBJECT ( NOME VARCHAR2(15), DISCIPLINA VARCHAR2(15) ); //Nested professor_type que será um atributo da tabela //aluno CREATE TYPE NT_PROF_T AS TABLE OF PROFESSOR_TYPE;

26 //Type aluno possue um conjunto de professores CREATE TYPE ALUNO_TYPE AS OBJECT( MATRICULA NUMBER, PROFESSORES NT_PROF_T ); //Nested de aluno, o qual já possue um conjunto como //atributo CREATE TYPE NT_ALUNO_T AS TABLE OF ALUNO_TYPE;

27 CREATE TYPE TURMA_TYPE AS OBJECT ( CODIGO VARCHAR2(3), SALA VARCHAR2(3), ALUNOS NT_ALUNO_T ); CREATE TABLE TURMA_TAB OF TURMA_TYPE ( CODIGO PRIMARY KEY ) NESTED TABLE ALUNOS STORE AS ALUNOS_T (NESTED TABLE PROFESSORES STORE AS PROF_T);

28 Sintaxe para inserção de aluno e professor INSERT INTO TURMA_TAB VALUES ('I5A', D005', NT_ALUNO_T( ALUNO_TYPE( , NT_PROF_T( PROFESSOR_TYPE(Manoel',Sistemas Digitais'), PROFESSOR_TYPE(Ruy',Logica') ) ),

29 Sintaxe para inserção de aluno e professor (continuação) ALUNO_TYPE( , NT_PROF_T( PROFESSOR_TYPE('Silvio','HFC'), PROFESSOR_TYPE('Hermano','PLP') ) )--nt_aluno_t );--insert

30 Sintaxe para inserção apenas de professor INSERT INTO TABLE( SELECT A.PROFESSORES FROM TABLE( SELECT FROM TURMA_TAB T WHERE T.CODT.ALUNOS IGO = 'I5A ) A WHERE A.MATRICULA = ) VALUES (Fernando,GDI);

31 Atualizando o professor da disciplina Projetão (PD). UPDATE TABLE( SELECT A.PROFESSORES FROM TABLE( SELECT T.ALUNOS FROM TURMA_TAB T WHERE T.CODIGO = 'I5A ) A WHERE A.MATRICULA = ) P SET VALUE(P)= PROFESSOR_TYPE('Jacques','PD') WHERE P.DISCIPLINA='PD';

32 Consulta em tabela aninhada SELECT P.NOME, P.DISCIPLINA FROM TURMA_TAB T, TABLE(T.ALUNOS) A, TABLE(A.PROFESSORES) P WHERE T.CODIGO = I5A ;

33 ALUNO PROFESSOR 1 n telefone nomediciplina matricula

34 Types

35 Table CREATE TABLE tb_aluno OF aluno_tp ( CONSTRAINT pk_aluno PRIMARY KEY (matricula) ) NESTED TABLE conj_professores STORE AS prof_nt; / commit; /

36 Insert com e sem elementos na nested ;

37 Consulta

38 Um computador possui vários componentes; Cada existem várias marcas diferentes para um componente; Cada marca possui um preço diferente por componente. CREATE OR REPLACE TYPE tp_marca AS OBJECT ( nome VARCHAR2(20), preco NUMBER); / CREATE OR REPLACE TYPE vr_marca AS VARRAY(10) OF tp_marca; / CREATE OR REPLACE TYPE tp_componente AS OBJECT ( descricao VARCHAR2(40), marcas vr_marca); / CREATE OR REPLACE TYPE vr_componente AS VARRAY(30) OF tp_componente; / CREATE OR REPLACE TYPE tp_computador AS OBJECT ( descricao VARCHAR2(50), componentes vr_componente ); / CREATE TABLE tb_computador OF tp_computador(CONSTRAINT pk_computador PRIMARY KEY (id));

39 INSERT INTO tb_computador VALUES( 1, 'Computador ID#1', vr_componente( tp_componente( 'Processador', vr_marca( tp_marca('Intel',1200), tp_marca('AMD', 999) )), tp_componente( 'Placa de Video', vr_marca( tp_marca('NVIDIA', 800), tp_marca('ATI', 700) ))));

40 SELECT C.descricao, m.nome, m.preco from tb_computador T, TABLE(T.componentes) C, TABLE(C.marcas) M; DESCRICAO NOME PRECO Processador Intel 1200 Processador AMD 999 Placa de Video NVIDIA 800 Placa de Video ATI 700

41 JDBC

42 Conjunto de interfaces e classes java que faz envio de consultas para um banco de dados. Objetos(tipos) Conexão (Driver e Connection) SQL para JDBC Midias

43 Driver – interface utilizada por toda aplicação que precise acessar um BD. Connection – conexão com BD. Obtida á partir de um Driver já carregado. Statement e PreparedStatement –. interfaces que representam as consultas. ResultSet – interface que recebe o resultado de uma consulta.

44 Essencial (carregamento obrigatório) para estabelecer uma conexão com BD. Class.forName (String driver_name) ; -> determina qual drive será usado. Esse comando registra o driver. *no DriverManager (classe responsável pelo gerenciamento de drivers carregados). *driver_name fornecido pelo provedor do BD. getConnection (String url_driver, String user_bd, String password_bd) ; -> método que acessa a tabela de drivers (DriverManager) com a url (do driver) passada e depois cria e retorna uma conexão com o BD.

45 String user = "eq01"; String password = "equipe1"; String url_driver = Class.forName("oracle.jdbc.driver.OracleDriver"); Como dito anteriormente, obtemos uma conexão SOMENTE APÓS registrar um driver no DriveManager. Connection connection = DriveManager.getConnection(url_driver, user, password) ;

46 try { Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection(url, user, password); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e.getMessage()); } connection.commit( ); connection.rollback( ); connection.close( ); * aconteceu comigo. Fiz várias consultas e travou depois de um tempo

47 Statement -> armazenam consultas que sempre são compiladas antes de serem executadas. * connection.createStatement(); - retorna um Statement. dml->linguagem de modelagem (ins,del,upd) ddl ->linguagen de definicao(create, drop) * statement.executeUpdate(String sql_dml_ddl); - realisa uma operação e retorna a quantidade de linhas modificadas. *statement.executeQuery(String sql_select); -realisa uma operação que retorna um ResultSet.

48 Statement stmt = connection.createStatement(); String sql1 = SELECT * FROM FROM Fornecedor; ResultSet rs = stmt.executeQuery(sql1); while(rs.next()){ nome = rs.getString(NOME); } *** rs.getTYPE_NAME(); String sql2 = INSERT INTO Fornecedor VALUES + ( , Info ); stmt.executeUpdate(sql2);

49 PreparedStatement - é um Statement que é compilado apenas na primeira execução. * connection.prepareStatement(String sql); -retorna um PreparedStatement. * **setType_name(); -seta valores onde existe ? no sql criado. public static final String INSERIR_FORNECEDOR_1_FONE = INSERT INTO tb_fornecedor (nome, cnpj, array_tp_fone, + nt_pedido_fornecedor, nt_produto ) VALUES (?,?, + array_tp_fone(tp_telefone(?,?)), nt_pedido_fornecedor(), nt_produto); ;

50

51

52

53

54


Carregar ppt "Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Tipos de métodos Member Static Constructor Comparison."

Apresentações semelhantes


Anúncios Google