опрос: имена полей в верхнем регистре в OCI8

tony2001

TeaM PHPClub
опрос: имена полей в верхнем регистре в OCI8

Коллеги, небольшой опрос.
Кто как относится к тому, что Оракл возвращает все поля в UPPERCASE? (я имею ввиду текущую реализацию [m]ocifetchinto[/m])
Просьба ответить более-менее аргументированно.

Например, лично меня это раздражает, т.к. принуждает все время держать Shift.
Кроме того, такая фича присутствует только в Оракле, поэтому при переходе с/на других(ие) ДБ немного сбивает с толку.
 

Falc

Новичок
>>Кроме того, такая фича присутствует только в Оракле, поэтому при переходе с/на других(ие) ДБ немного сбивает с толку.

Нет такая фича еще есть в интербейсе, после работы с мускулом крайне не превычно. :)
 

tony2001

TeaM PHPClub
>Нет такая фича еще есть в интербейсе, после работы с мускулом крайне не превычно.
ага, спасибо за инфу, я с Интербейзом не работал к сожалению.
 

romutis

Guest
Re: опрос: имена полей в верхнем регистре в OCI8

Автор оригинала: tony2001
Коллеги, небольшой опрос.
Кто как относится к тому, что Оракл возвращает все поля в UPPERCASE? (я имею ввиду текущую реализацию [m]ocifetchinto[/m])
Просьба ответить более-менее аргументированно.
Потому что Оракл по умолчанию хранит имена полей во внутреннем представлении в uppercase - фича такая.
Единственный вариант (ИМХО, кривой) при создании объектов указывать имена в кавычках.Т.е. create table test - будет сохранено в словаре Оракла как TEST, а вот create table "test" будет сохранено как "test" - именно в lowercase.
 

tony2001

TeaM PHPClub
>Потому что Оракл по умолчанию хранит имена полей во внутреннем
>представлении в uppercase - фича такая.
спасибо, я в курсе, что это фича.

>Единственный вариант (ИМХО, кривой) при создании объектов указывать имена в
>кавычках.Т.е. create table test - будет сохранено в словаре Оракла как TEST, а
>вот create table "test" будет сохранено как "test" - именно в lowercase.
да, и это знаю.

мне интересно знать другое: насколько удобней было бы, если бы у ocifetchinto был доп. флаг для принудительного перевода имен полей в результирующем массиве в нижний регистр.
 

Dimitry

Guest
Гмм.. ну, тут такое дело.

Давайте не будем гадать а заглянем к дядькам, которые все это дело стандартизируют.

Итак, анализируем стандарт SQL99
Исходный документ ANSI-ISO 9075-2::1999

рисунок 1.

Смотрим на раздел "20.1" страница 751 (последний абзац):
Within this character string, any lower-case letter appearing in a <regular identifier> is replaced by the equivalent upper-case letter, and any <doublequote symbol> appearing in a <delimited identifier body> is replaced by a <double quote>.

Далее в том же документе
рисунок 2.

Смотрим на раздел 11.3 <table definition>:
<table definition> ::=
CREATE [ <table scope> ] TABLE <table name>
<table contents source>
[ ON COMMIT <table commit action> ROWS ]


Ну, остальное нас пока не очень интересует, давайте посмотрим, что такое <table name> по мнению дядек из комитета по стандартизации.

рисунок 3.

Смотрим на раздел 5.4 Names and identifiers:
<table name> ::= <local or schema qualified name>
<local or schema qualified name> ::= [ <local or schema qualifier> <period> ] <qualified identifier>
<qualified identifier> ::= <identifier>
<identifier> ::=
<actual identifier>
<actual identifier> ::=
<regular identifier>
| <delimited identifier>


Ну и последнее, смотрим на рисунок под номером 1.

Вобщем, добро пожаловать в мир стандартизации.
 

Dimitry

Guest
Вдогонку

Тому, кто первый найдет ошибку в моей цепочке размышлений поставлю кружку пива.

А ошибка там кстати есть :)
 
Сверху