Привет всем.

Сервер 2.0.3.13023
Кодировка базы UTF8

Есть хранимые процедуры склонения имен, отчеств, фамилий типа

begin
  /* Отчество Дательный падеж (выдать справку КОМУ?) */
/* Перекладываем входной параметр в переменную - для будущего использования */ /* Делаем последнюю, две последних и три последних буквы входной строки */
  /* Делаем имя без одной, без двух и без трех букв */
  select OUT, LAST1, LAST2, LAST3, BEZ1, BEZ2, BEZ3, LEN
  from GET_BEZ_AND_LAST(:INP)
  into :INPU, :LAST1, :LAST2, :LAST3, :BEZ1, :BEZ2, :BEZ3, :LEN;

  /* Если длина  2 символа и меньше, оставляем её без
     изменения */
    /* Если длина имени 2 символа и меньше, оставляем его без изменения */
  if (LEN <= 2) then begin OUT=INP; exit; end
  /* Если в поле нерусское отчество (типа "Кызыл-оглы"), возвращаем его как
     есть */
  if ((LAST1<>'ч') and (LAST1<>'а')) then begin OUT=INP; exit; end
  /* "Сергеевич" - "Сергеевичу" (мужские) */
  if (sex=0) then begin OUT=INP||'у'; exit; end
  /* "Сидоровна" - "Сидоровне" (женские) */
  if (sex=1) then begin OUT=bez1||'е'; exit; end
  /* В других случаях возвращаем вход */
  OUT = INP;
end

которые не компилятся в базе UTF8 из-за букв в WIN1251
с ошибкой
Invalid token.
SQL error code = -104.
Malformed string.

как это дело обойти/порешать с минимальными затратами?

Ответить