Normalize os nomes das colunas no Oracle 11g
Pergunta
Preciso remover as citações dos nomes das colunas em muitas mesas no meu esquema. Existe alguma maneira de automatizar esse processo?, Alguma função no Oracle ou alguma ferramenta que me permita alterar os nomes das colunas que removem as cotações. Estou usando o Oracle 11g.
ATUALIZAR
Sinto muito, tive que reformular minha pergunta.
desde já, obrigado.
Solução
Se você só quer se livrar de todos os nomes de colunas sensíveis ao caso
SQL> create table foo ( "x" number );
Table created.
SQL> ed
Wrote file afiedt.buf
1 begin
2 for x in (select *
3 from user_tab_cols
4 where column_name != UPPER(column_name))
5 loop
6 execute immediate 'ALTER TABLE ' || x.table_name ||
7 ' RENAME column "' || x.column_name || '"' ||
8 ' TO ' || upper(x.column_name);
9 end loop;
10* end;
SQL> /
PL/SQL procedure successfully completed.
SQL> desc foo
Name Null? Type
----------------------------------------- -------- ----------------------------
X NUMBER
Outras dicas
Suponho aqui por "campos", você quer dizer "nomes de colunas".
Lembre -se de que os nomes das colunas no Oracle não são sensíveis ao caso, a menos que você os coloque em cotações ao criar a tabela. Geralmente, não é uma boa ideia usar citações em torno dos nomes das colunas ao criar a tabela. Em outras palavras, se você criar a tabela como esta:
CREATE TABLE FOO (
colUMN1 varchar2(10),
CoLumn2 number(38)
)
Então você ainda pode executar instruções selecionadas como esta:
SELECT column1, column2 FROM FOO
Você também pode fazer isso:
SELECT COLUMN1, COLUMN2 FROM FOO
Observe também que, se você executar esta consulta, verá que o Oracle armazenou os nomes de colunas como maiúsculas no Dicionário de Dados:
SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'FOO'
Portanto, não há necessidade de renomear essas colunas para todas as maiúsculas. As consultas que você escreve podem usar todos os nomes de colunas maiúsculos (assumindo que as tabelas não foram criadas usando aspas em torno dos nomes das colunas) e elas funcionarão bem. Geralmente, é uma má idéia tentar forçá -los a ser sensíveis ao caso.