Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 16 anos, 8 meses atrás por Avatar photoLeonardo Litz.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #88121
    Scheidt
    Participante

      Bom dia.

      Pessoal gostaria de tirar uma dúvida com vocês sobre a criação de Types no Oracle, tenho a missão de migrar um sistema de SQL Server para Oracle e me deparei com os objetos UserDatatypes.

      Quando criado um type no SQL Server é como se fosse um tipo de dado novo no banco só que com o nome desejado, neste caso pode ser utilizado para criação das tabelas, definição de variáveis em procedures e alguns casos utilizam no fonte em Delphi.

      Mas para Oracle percebi um comportamento diferente onde toda manipulação do campo com esse TYPE tem que utilizar o nome do TYPE na frente da coluna, até mesmo para visualização após um SELECT aparece o nome.

      O problema é que isso implica em alterar os fontes onde toda a manipulação de dados teria que inserir o nome do TYPE e tratar o retorno para retirar o nome do TYPE.

      Exemplo:
      CREATE OR REPLACE TYPE t_cep AS OBJECT (
      cep CHAR(8));

      CREATE TABLE endereco (
      rua CHAR(50),
      cep t_cep);

      INSERT INTO endereco VALUES(‘Rua: Pedro Violane’, t_cep(‘89216780’));

      UPDATE endereco
      SET cep = t_cep(‘89216788’)
      WHERE cep = t_cep(‘89216780’);

      SELECT cep FROM endereco;

      CEP(CEP)
      ——————
      T_CEP(‘89216780’)

      Existe outra maneira de referenciar um TYPE no Oracle?

      Obrigado.
      Scheidt

      #88125
      Avatar photoLeonardo Litz
      Participante

        Olá Scheidt.

        Pelo que sei não há outra forma de referenciar um type.
        Oque vc pode fazer é criar uma variável do tipo de seu type e maninupar por ela.

        Por exemplo:


        declare
        v_cep t_cep;

        begin

        v_cep := t_cep(null);
        v_cep.cep := '89216780';

        INSERT INTO endereco VALUES('Rua: Pedro Violane', v_cep);

        end;

        vlw Leonardo Litz

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.