據我所知(糾正我,如果我錯了),在ODBC表名不區分大小寫。另一方面,一些谷歌搜索使我無法找到目錄和模式名稱是否區分大小寫。ODBC中的Catalog和Schema名稱是否區分大小寫?
任何人都可以鏈接到這個規範?
據我所知(糾正我,如果我錯了),在ODBC表名不區分大小寫。另一方面,一些谷歌搜索使我無法找到目錄和模式名稱是否區分大小寫。ODBC中的Catalog和Schema名稱是否區分大小寫?
任何人都可以鏈接到這個規範?
不應該依賴ODBC中不區分大小寫的表名。您可以使用ODBC SQLGetInfo調用,告訴您它們是否區分大小寫以及它們是大寫還是小寫。有些數據庫/驅動程序在引用表格時會維持大小寫。
在MS SQL Server,你會發現不區分大小寫的表名,但在甲骨文不會:
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。
http://msdn.microsoft.com/en-us/library/ms711681(v=vs.85).aspx
注意到了「因爲在SQL-92標識符是從來沒有區分大小寫,作爲支持該嚴格遵循SQL-92(任何級別)的驅動器將永遠不會返回SQL_IC_SENSITIVE選項。」