Двойные кавычки - это то, чего вам следует избегать в Oracle мире.
Ваш запрос:
SELECT "m"."Id", "m"."MAJORVERSION" FROM "MyTableVersions" "m"
означает, что имя столбца точно Id
( капитал I
, за которым следует d
). Только если это действительно так, вы должны использовать двойные кавычки. В противном случае просто удалите их:
SELECT m.id, m.MAJORVERSION FROM MyTableVersions m
То же самое относится и к имени таблицы - если она была создана с использованием смешанного регистра (и вы не можете сделать это без двойных кавычек), вам придется использовать двойной кавычки и точно такой же регистр букв всегда . В противном случае не используйте их.
Oracle не учитывает регистр имен объектов и столбцов и по умолчанию имеет значение UPPERCASE:
SQL> create table test (id number);
Table created.
SQL> desc test
Name Null? Type
----------------------------------------- -------- -----------------
ID NUMBER
SQL> select table_name, column_name
2 from user_tab_columns
3 where table_name = 'TEST';
TABLE_NAME COLUMN_NAME
------------------------------ ------------------------------
TEST ID
SQL> insert into test (id) values (1);
1 row created.
SQL>
Но, если вы используете смешанный регистр с двойным кавычки, затем используйте их всегда:
SQL> create table "teST" ("Id" number);
Table created.
SQL> insert into test (id) values (1);
insert into test (id) values (1)
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> insert into "test" (id) values (1);
insert into "test" (id) values (1)
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> insert into "teST" (id) values (1);
insert into "teST" (id) values (1)
*
ERROR at line 1:
ORA-00904: "ID": invalid identifier
SQL> insert into "teST" ("Id") values (1);
1 row created.
SQL>
Итак: сначала убедитесь, что на самом деле имена таблиц и столбцов, а затем используйте их соответствующим образом.