2015-01-27 1 views
0

나는 오라클에서 여러 테이블을 만든하지만 예를 들어 쿼리USER_TABLES 오라클

select * from user_tables where table_name='temp'; 

을 사용하여 찾을 수 없습니다하지만 테이블 임시 내가 그것을 확인, 존재 확신 해요.

+0

을'TABLE' 명령을 CREATE, 영업에 사용 된'SELECT' 명령은 테이블없이 지정 될 수 없습니다 인용 부호. 그것은'SELECT' 문이 단지 순수한 데이터를 나열하기 때문입니다. 정말 테이블 이름이라는 것을 알지 못합니다. 그것은 사람의 이름, 물건 이름, 뭐든지 될 수 있습니다. 따라서 작은 따옴표를 사용해야합니다 ... 그러나 작은 따옴표를 사용하는 경우 대소 문자가 일치해야합니다. 그리고 데이터베이스 테이블은 Oracle에서는 기본적으로 대문자입니다. 테이블을 대문자로하는'CREATE TABLE' 커맨드에서는 따옴표를 사용하지 않았을 것입니다. – tvCa

답변

4

테이블 이름은 user_tables에서 대문자 여야합니다.

select * from user_tables where table_name='TEMP'; 

예 :

SQL> create table bogus (name varchar2(10)); 

Table created. 

SQL> select table_name from user_Tables where table_name = 'bogus'; 

no rows selected 

SQL> select table_name from user_Tables where table_name = 'BOGUS'; 

TABLE_NAME 
------------------------------ 
BOGUS 

는 ***이이 답변의 코멘트 섹션에서 말한 것의 조금을 설명하는 편집이다. 즉, 오라클에서 대소 문자가 혼합 된 대/소문자를 생성 할 수 있지만 참조 할 때마다 개체 이름을 큰 따옴표로 묶어야하는 문제가 발생합니다.

예제

SQL> create table "bogus" (name varchar2(10)); 

Table created. 

SQL> select table_name from user_tables where table_name = 'BOGUS'; 

no rows selected 

SQL> select table_name from user_tables where table_name = 'bogus'; 

TABLE_NAME 
------------------------------ 
bogus 

SQL> select * from bogus; 
select * from bogus 
      * 
ERROR at line 1: 
ORA-00942: table or view does not exist 


SQL> select * from "bogus"; 

no rows selected 

SQL> 
+1

CREATE TABLE은 실제로이 작업을 수행합니다 :'create table "BOGUS"("NAME"varchar2 (10));'- 우리는 (all) 위 응답 에서처럼 암시 적으로 변환 된 명령의 리터럴을 계속 사용합니다. 문제는 초보자가 혼란 스러울 수 있다는 것입니다. – tvCa

0

이 시도 : 달리

select * from user_tables where upper(table_name)=upper('temp'); 
+0

당신 말이 맞아요, 지적 해 주셔서 고마워요. 나는 내 대답을 편집했다. – pksnj