2012-12-05 7 views
0

Oracle 11g 및 Oracle SQL Developer 3.2.20.09를 사용하고 있습니다. 나는 절차를 만들고있다.오라클의 아포스트로피 필요

왜 오류 PL/SQL: ORA-00942: table or view does not exist를 얻을 내가 이런 쿼리 작성됩니다 때

select * from TableExample; 

을하지만이 같은 쿼리를 작성하는 경우 :

select * from "TableExample"; 

를 잘 작동?

첫 번째 옵션을 오류없이 사용할 수 있습니까? table은 위의 쿼리를 실행하는 동일한 사용자를 사용하여 만들어졌습니다.

편집 : 나는 또한 '테이블'예약어이기 때문에 오라클은 예를 들어 같은 구문 오류로 볼 수 있도록 기본 키 ID

답변

2

테이블 이름을 큰 따옴표로 묶어 테이블을 만들었 기 때문입니다. 일반적으로 테이블과 컬럼 이름은 대소 문자를 구분하지 않지만 큰 따옴표를 사용하면 큰 따옴표가 붙지 않고 대문자로 구분됩니다 (미친, 사실 :-().

올바른 테이블과 컬럼을 찾으려면 열 이름, 당신은 데이터 사전을 조회 할 수 있습니다. (필요한 권한이없는 경우 대신 dba_tab_cols의 user_tab_cols를 사용)

select * from dba_tab_cols where upper(table_name) = upper('TableExample') 

을 를이 쿼리에 의해 반환 된 각 테이블 이름과 열 이름의 경우, 경우 대문자 또는 밑줄 이외의 문자가 포함되어 있으면 따옴표를 붙여야합니다.

1

를 제외하고, 모든 필드에 아포스트로피를 사용할 필요가 나타났습니다 :

큰 따옴표로 이스케이프 처리 할 수 ​​있지만이 표를 쿼리 할 때마다 사용해야합니다.

+0

혼란 스럽습니다. 질문을 업데이트했습니다. 테이블 이름은 예제 일뿐입니다. – Howie

+1

누군가가 큰 따옴표 'create table "TableExample"';을 사용하여 테이블 이름을 만들어야합니다. 이는 테이블 이름이 대소 문자를 구분한다는 것을 의미합니다. – Shepherdess

1

테이블을 만드는 방법에 따라 다릅니다. 테이블이 "TableExample"(따옴표 포함)로도 생성 된 경우 테이블 이름은 대소 문자를 구분하므로 테이블을 선택할 때 따옴표를 사용해야합니다.