Есть таблица Oracle, названная зарезервированным словом. Какие проблемы могут возникнуть?

Мы только что передали систему на аутсорсинг, и на первый взгляд я вижу несколько таблиц и полей с именами CASE или FROM. Это БД Oracle 10g, и мы будем использовать эти данные из Java, Hibernate, C#, C++.

Есть ли что-то особенное, о чем мы должны знать?

Из того, что я видел в других сообщениях, это не рекомендуется, потому что это повлияет на читаемость нашего кода, но могут ли это вызвать какие-либо другие, серьезные или более серьезные проблемы?

Спасибо!


person jhurtado    schedule 20.01.2011    source источник


Ответы (1)


Чтобы избежать зарезервированных слов в Oracle, вам нужно заключить их (в данном случае имя таблицы) в двойные кавычки. IE:

SELECT *
  FROM "CASE"

В противном случае вы получите сообщение об ошибке «ORA-00903: Invalid table name». IIRC, Oracle обрабатывает текст внутри двойных кавычек как чувствительный к регистру, поэтому вы все равно можете получить ошибку, если имя таблицы было создано в нижнем регистре при использовании примерного запроса.

Кроме этого, я вижу обычную проблему только с плохо названными сущностями/атрибутами.

person OMG Ponies    schedule 20.01.2011
comment
Да, чувствительность к регистру является основной проблемой при этом. - person David Gelhar; 20.01.2011
comment
Хорошо, но зная об этом, ничего большего не должно произойти, верно? Мы все еще находимся на той стадии, когда мы можем попросить изменить имена. Это достойно? - person jhurtado; 20.01.2011
comment
@Jhurtado: Если вы можете изменить имена таблиц, обязательно сделайте это. У меня нет опыта работы с ORM, чтобы знать, насколько изящно они справятся с ситуацией, но это повод для беспокойства. - person OMG Ponies; 20.01.2011
comment
Если нет веской причины (и я не могу ее придумать) для того, чтобы имена объектов перегружали зарезервированные ключевые слова, то да, я считаю, что стоит изменить имена таблиц прямо сейчас. - person bhangm; 20.01.2011
comment
Спасибо, ребята, тогда я настоятельно рекомендую пойти на изменения. :) - person jhurtado; 20.01.2011
comment
создать таблицу ORA-00903: Недопустимое имя таблицы (ORA-00918 varchar2 (10)); - person Rob van Laarhoven; 20.01.2011