문제

스키마의 많은 테이블에서 열의 이름에서 따옴표를 제거해야합니다. 이 프로세스를 자동화하는 방법은? 나는 Oracle 11g를 사용하고 있습니다.

업데이트

죄송합니다. 질문을 다시 제출해야했습니다.

미리 감사드립니다.

도움이 되었습니까?

해결책

모든 경우 민감한 열 이름을 제거하려면

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

다른 팁

나는 여기서 "필드"당신은 "열 이름"을 의미한다고 가정합니다.

테이블을 만들 때 인용구에 넣지 않으면 Oracle의 열 이름은 대용품에 민감하지 않습니다. 일반적으로 테이블을 만들 때 열 이름 주위에 따옴표를 사용하는 것은 좋은 생각이 아닙니다. 다시 말해, 다음과 같은 테이블을 만들면 다음과 같습니다.

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

그런 다음 여전히 다음과 같은 선택 설명을 실행할 수 있습니다.

SELECT column1, column2 FROM FOO

당신은 또한 이것을 할 수 있습니다 :

SELECT COLUMN1, COLUMN2 FROM FOO

또한이 쿼리를 실행하면 Oracle이 칼럼 이름을 데이터 사전에서 대문자로 저장 한 것을 볼 수 있습니다.

SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'FOO'

따라서이 열의 이름을 모든 대문자로 바꿀 필요가 없습니다. 당신이 쓴 쿼리는 모든 대문자 열 이름을 사용할 수 있으며 (열 이름 주위에 따옴표를 사용하여 테이블이 생성되지 않았다고 가정) 잘 작동합니다. 일반적으로 사례에 민감하도록 강요하는 것은 나쁜 생각입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top