English 中文(简体)
Normalize columns names in ORACLE 11g
原标题:

I need remove the quotes from the names of the columns in many tables in my schema. there is any way to automate this process?, any function in oracle or some tool that allows me to change the names of the columns removing the quotes. I am using oracle 11g.

UPDATE

I m sorry, I had to rephrase my question.

thanks in advance.

最佳回答

If you just want to get rid of all the case sensitive column names

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
问题回答

I assume here by "fields" you mean "column names".

Keep in mind that column names in Oracle are not case sensitive unless you put them in quotes when creating the table. It s generally not a good idea to use quotes around the column names when creating the table. In other words, if you create the table like this:

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

Then you can still run select statements like this:

SELECT column1, column2 FROM FOO

You can also do this:

SELECT COLUMN1, COLUMN2 FROM FOO

Also note that if you run this query, you ll see that Oracle stored the column names as uppercase in the data dictionary:

SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME =  FOO 

So there s no need to rename these columns to all uppercase. The queries you write can use all uppercase column names (assuming the tables weren t created using quotes around the column names) and they ll work fine. It s generally a bad idea to try to force them to be case sensitive.





相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签