Для Oracle

oracle://user:password@service?
   ClientCharset=кодировка&
   LowerCaseColumnNames=0&
   
DisableQueryModification=0& [3.3.0]
   NLS_LANG=RUSSIAN_AMERICA.CL8MSWIN1251&
   NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS&
   NLS_LANGUAGE=language-dependent conventions&
   NLS_TERRITORY=territory-dependent conventions&
   NLS_DATE_LANGUAGE=language for day and month names&
   NLS_NUMERIC_CHARACTERS=decimal character and group separator&
   NLS_CURRENCY=local currency symbol&
   NLS_ISO_CURRENCY=ISO currency symbol&
   NLS_SORT=sort sequence&
   ORA_ENCRYPT_LOGIN=TRUE

ClientCharset - задает кодировку, в которой необходимо общаться с SQL-сервером, перекодированием занимается драйвер.

Если имена колонок в запросе
select не взять в кавычки, Oracle преобразует их в ВЕРХНИЙ регистр. Parser 3 же по умолчанию преобразует их в нижний регистр. Указав параметр LowerCaseColumnNames=0, можно отключить преобразование в нижний регистр.

При выполнении запроса с 
limit/offset драйвер модифицирует текст запроса для отсечения ненужных данных средствами SQL-сервера. Однако в случае возникновения проблем это поведение можно отключить с помощью параметра DisableQueryModification=1.

Информацию по остальным параметрам можно найти в документации по Environment variables для Oracle. Однако, мы рекомендуем всегда задавать параметры
NLS_LANG и NLS_DATE_FORMAT так, как указано выше.


Пример
Допустим, данные в базе хранятся в кодировке
windows-1251, строку подключения стоит написать так:
oracle://user:password@service?ClientCharset=windows-1251&NLS_LANG=RUSSIAN_AMERICA.CL8MSWIN1251&NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS


Примечание. Существует специальная конструкция для записи больших строковых литералов. Oracle не умеет работать с большими строковыми литералами. Если передаваемая, например, из формы строка будет содержать больше 2000 [Oracle 7.x] или 4000 [Oracle 8.x] букв, сервер выдаст ошибку «Слишком длинный литерал». Если пытаться хитрить, комбинируя «2000 букв» + «2000 букв», то также будет выдана ошибка «Слишком длинная сумма». Для хранения таких конструкций используется тип данных CLOB[Oracle] и OID[Postgres], а для того чтобы SQL-команды были максимально просты, при записи таких строк необходимо лишь добавить управляющий комментарий, который драйвер соответствующего SQL-сервера обработает нужным образом:

insert into news text values (/**text**/'$form:text')

Слово
text в записи /**text**/ - это имя колонки, в которую предназначен следующий за этой конструкцией строковый литерал. Пробелы здесь недопустимы.




Copyright © 1997–2024 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 11.09.2024