Question

Je dois supprimer les citations des noms des colonnes dans de nombreux tableaux dans mon schéma. il y a un moyen d'automatiser ce processus ?, une fonction dans l'oracle ou un outil qui me permet de changer les noms des colonnes supprimant les guillemets. J'utilise 11g oracle.

UPDATE

Je suis désolé, je devais reformuler ma question.

Merci d'avance.

Était-ce utile?

La solution

Si vous voulez juste pour se débarrasser de tous les cas les noms de colonnes sensibles

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

Autres conseils

Je suppose ici par « champs » vous voulez dire « colonne des noms ».

Gardez à l'esprit que les noms de colonnes dans Oracle ne sont pas sensibles à la casse, sauf si vous les mettez entre guillemets lors de la création de la table. Il est généralement pas une bonne idée d'utiliser des guillemets autour des noms de colonnes lors de la création de la table. En d'autres termes, si vous créez la table comme ceci:

CREATE TABLE FOO (
  colUMN1 varchar2(10),
  CoLumn2 number(38)
)

Ensuite, vous pouvez toujours exécuter les instructions select comme ceci:

SELECT column1, column2 FROM FOO

Vous pouvez également faire ceci:

SELECT COLUMN1, COLUMN2 FROM FOO

Notez également que si vous exécutez cette requête, vous verrez que Oracle stockées les noms de colonnes en majuscule dans le dictionnaire de données:

SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'FOO'

Il n'y a donc pas besoin de renommer ces colonnes en majuscules. Les requêtes que vous écrivez peuvent utiliser tous les noms de colonnes en majuscules (en supposant que les tables ne sont pas créés à l'aide des guillemets autour des noms de colonnes) et ils vont bien fonctionner. Il est généralement une mauvaise idée d'essayer de les forcer à la casse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top