2011-08-10 2 views
1

필자가 아는 한 (내가 틀렸다면 나에게 맞춰라.) ODBC 테이블 이름은 대소 문자를 구분하지 않는다. 반면, 약간의 인터넷 검색은 카탈로그 및 스키마 이름이 대소 문자를 구분하는지 여부를 파악하는 데 나에게 도움이되지 못했습니다.ODBC의 카탈로그 및 스키마 이름은 대소 문자를 구분합니까?

누구나이 사양에 연결할 수 있습니까?

답변

3

ODBC에서 대소 문자를 구분하지 않는 테이블 이름에 의존해서는 안됩니다. ODBC SQLGetInfo 호출을 사용하면 대소 문자가 구분되는지, 대문자인지 소문자인지 알 수 있습니다. 일부 데이터베이스/드라이버는 테이블을 인용 할 때 대/소문자를 유지합니다. 당신은 대소 문자를 구분 테이블 이름을 찾을 수 있습니다 MS SQL 서버에서

하지만 오라클에서 당신은하지 않습니다 :

이 가 가

은 무엇 오라클이 실제로하는 일은 대문자 인용되지 않은 테이블 이름입니다

create table "fred" (a integer) 
insert into "fred" values (1); 
select * from fred 
[S0002][unixODBC][Oracle][ODBC][Ora]ORA-00942: table or view does not exist 
select * from "fred" 
+-----------------------------------------+ 
| A          | 
+-----------------------------------------+ 
| 1          | 
+-----------------------------------------+ 
select * from "FRED" 
[S0002][unixODBC][Oracle][ODBC][Ora]ORA-00942: table or view does not exist 
:

SQL> create table fred (a integer) 
SQLRowCount returns -1 
SQL> insert into fred values (1) 
SQLRowCount returns 1 
SQL> select * from fred 
+-----------------------------------------+ 
| A          | 
+-----------------------------------------+ 
| 1          | 
+-----------------------------------------+ 
SQLRowCount returns -1 
1 rows fetched 
SQL> select * from "FRED" 
+-----------------------------------------+ 
| A          | 
+-----------------------------------------+ 
| 1          | 
+-----------------------------------------+ 
SQLRowCount returns -1 
1 rows fetched 
SQL> select * from "fred" 
[S0002][unixODBC][Oracle][ODBC][Ora]ORA-00942: table or view does not exist 

동일 적용 스키마 및 카탈로그 이름. SQLGetInfo를 살펴보면 드라이버가 무엇을하는지에 대해 알려줄 것입니다. SQL_IDENTIFIER_CASE 및 SQL_IDENTIFIER_QUOTE_CHAR을 찾습니다. 은 "SQL-92의 식별자는 대소 문자를 구분 적이 없기 때문에 지원으로, SQL-92 (모든 레벨)을 엄격하게 준수하는 드라이버가 SQL_IC_SENSITIVE 옵션을 반환하지 않습니다."의

http://msdn.microsoft.com/en-us/library/ms711681(v=vs.85).aspx

를 적어 둡니다.

관련 문제