1
resposta

Mudando tipos

Boa noite, eu gostaria de saber como faço para mudar uma coluna que possui tipo de dado clob para varchar2. Estou treinando o conteudo do curso e o comando:

ALTER TABLE IMOVEIS_ALUGUEL MODIFY (COMODOS_TIPOS VARCHAR2(50));

No caso a coluna COMODOS_TIPOS não necessita de clob e gostaria de aprender como fazer tal mudança, pois qnd aplico o comando acima, o seguinte erro é retornado:

ALTER TABLE IMOVEIS_ALUGUEL MODIFY (COMODOS_TIPOS VARCHAR2(50))
Relatório de erros -
ORA-22859: modificação inválida de colunas
22859. 00000 -  "invalid modification of columns"
*Cause:    An attempt was made to modify an object, REF, VARRAY, nested
           table, or LOB column type.
*Action:   Create a new column of the desired type and copy the current
           column data to the new type using the appropriate type
           constructor.
1 resposta

Oi, Rodrigo, tudo bem?

Desculpa a demora em te responder!

Para mudar o tipo de dados de uma coluna de CLOB para VARCHAR2, precisamos criar uma nova coluna com o tipo de dados desejado e, em seguida, copiar os dados da coluna antiga para a nova coluna. Depois disso,podemos excluir a coluna antiga.

Segue um exemplo de como fazer isso:

  • Adiciona uma nova coluna com o tipo de dados VARCHAR2:

    ALTER TABLE IMOVEIS_ALUGUEL ADD COMODOS_TIPOS_NEW VARCHAR2(50);
  • Atualiza a nova coluna com os dados da coluna antiga:

    UPDATE IMOVEIS_ALUGUEL SET COMODOS_TIPOS_NEW = COMODOS_TIPOS;
  • Exclui a coluna antiga:

    ALTER TABLE IMOVEIS_ALUGUEL DROP COLUMN COMODOS_TIPOS;
  • Renomeia a nova coluna para o nome original:

    ALTER TABLE IMOVEIS_ALUGUEL RENAME COLUMN COMODOS_TIPOS_NEW TO COMODOS_TIPOS;

Espero ter ajudado. Caso tenha dúvidas, estarei à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!