2011-08-10 10 views

答えて

3

ODBCでは、大文字と小文字を区別しないテーブル名を使用しないでください。大文字と小文字が区別され、大文字か小文字かを示すODBC SQLGetInfo呼び出しがあります。いくつかのデータベース/ドライバは、テーブルが引用されるときに大文字小文字を維持します。

あなたは大文字小文字を区別しないテーブル名を見つけることができますが、Oracleでは、あなたがしませんMS SQL Serverので

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 

同じことが当てはまる:Oracleが、実際には何

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 

は大文字の引用符で囲まれていないテーブル名ですスキーマとカタログ名。 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

をメモします。

関連する問題