Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Непонятная ошибка в SQL-запросе / 18 сообщений из 18, страница 1 из 1
05.05.2010, 21:20
    #36613971
LexisSTV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
Здравствуйте.
Опыт работы с sql хороший, а вот с каше не очень - некоторые вещи ставят просто в тупик.
Помогите разобраться: есть вроде несложный вопрос типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT distinct BasisFK->ID,Tax
FROM My.Pay
where
   (
      BasisFK->ID =  1 
      and
      substr(Tax,  1 ,  2  ) <> 'МС'
   )
   or
   (
      BasisFK->ID <>  1 
      and
      substr(Tax,  1 ,  2  ) = 'МС'
   )
and 
 DOPFK in ( 'a1','a2','a3','a4' )
проблема в том, что когда в последнем условии 3 значения (а1,а2,а3) - то все нормально выполняется, но если добавить а4, то получаем:

ОШИБКА #5540: SQLCODE: -400 Сообщение: <SUBSCRIPT>buildCanonical+58^%qaqpre *orderedOperands("&(&('=(65.2,#x^%parm(5)),=(SUBSTR(56.1,#x^%parm(6),#x^%parm(..)ERROR: CacheSql521.MAC(13) : <SUBSCRIPT>buildCanonical+58^%qaqpre *orderedOperands("&(&('=(65.2,#x^%parm(5)),=(SUBSTR(56.1,#x^%parm(6),#x^%parm(..) : SQLTEXT: SELECT distinct BasisFK->ID,Tax FROM My.Pay where ( BasisFK->ID = 1 and substr(Tax...

Версия каше cache 2009.1.2.602.0. Гугл молчит и не могу понять вообще куда копать. Данный запрос небольшой, но есть более сложные и самое противное что пишешь, пишешь - все ок, но в последний момент добавляешь какое-нибудь простенькое условие 'and k>100' и бац "buildCanonical"

Помогите пожалуйста советом...
...
Рейтинг: 0 / 0
06.05.2010, 02:15
    #36614332
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
LexisSTV,

А из какого контекста вызов идет (метод класса, odbc, zen,...)?
В портале тоже ошибка?
А полный код ошибки можно (без многоточия в конце)?

Судя по коду, где-то получилась слишком большая строка. В ZENe бывает такое в случае, когда запрос оформляется в тегах tablePane. Спасает написание Query.
...
Рейтинг: 0 / 0
06.05.2010, 02:44
    #36614338
ser_shu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
LexisSTV,

судя по коду, каше не может распознать sql строку
(SUBSTR(56.1,#x^%parm(6),#x^%parm(..)
идет %parm(6), а потом %parm(..)
то ли в sql строке точка вместо запятой, то ли двойная кавычка вместо одинарной или три кавычки подряд...

Это точный ошибочный текст SQL строки или поправленный?
...
Рейтинг: 0 / 0
06.05.2010, 07:34
    #36614418
LexisSTV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
kolesovLexisSTV,

А из какого контекста вызов идет (метод класса, odbc, zen,...)?
В портале тоже ошибка?
А полный код ошибки можно (без многоточия в конце)?

Судя по коду, где-то получилась слишком большая строка. В ZENe бывает такое в случае, когда запрос оформляется в тегах tablePane. Спасает написание Query.

Контекст: портал или ODBC.
Портал обрезанную ошибку дает.

ser_shuЭто точный ошибочный текст SQL строки или поправленный?
Синтаксис точный, имена поправленные. (напр. последнее условие in ( '39210202010061000160','392102022020061000160','39210202100081000160','39210202110091000160' ) )

Кстати, если смотреть на кэшированый запрос (CacheSql521.MAC(13)), то при такой ошибке обычно он указывает на длинную строку from (почему-то генерирует все в одну строчку) - может с этим что-то связано?
...
Рейтинг: 0 / 0
06.05.2010, 08:50
    #36614462
ser_shu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
LexisSTV
Кстати, если смотреть на кэшированый запрос (CacheSql521.MAC(13)), то при такой ошибке обычно он указывает на длинную строку from (почему-то генерирует все в одну строчку) - может с этим что-то связано?
А можно текст этой длинной строчки показать здесь?
...
Рейтинг: 0 / 0
06.05.2010, 09:04
    #36614486
LexisSTV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
Заметил также, что эта ошибка вылазиет если искать в docвook по двум словам напр "class query" (а по одному - ок)...
...
Рейтинг: 0 / 0
06.05.2010, 09:23
    #36614515
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
LexisSTV,

Я, кажись понял, почему:

1. Поскольку по substr() к индексам обращения нет, работает запрос по индексу на DOPFK

2. Для одной (минимум) записи с DOPFK ='a4' есть свойство Tax, превышающее максимально допустимый размер строкового свойства (по умолчанию - 50 символов)

3. Происходит ошибка ;)

Лечить:

В описании класса My.Pay указать для свойства Tax длину побольше...
...
Рейтинг: 0 / 0
06.05.2010, 09:24
    #36614517
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
Проверить можно так

... DOPFK in ( 'a4' )
...
Рейтинг: 0 / 0
06.05.2010, 10:11
    #36614626
LexisSTV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
kolesovПроверить можно так

... DOPFK in ( 'a4' ) не помогло. З любых параметра - ок, как только добавляю 4 - ерор.
...
Рейтинг: 0 / 0
06.05.2010, 10:13
    #36614632
LexisSTV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
ser_shuLexisSTV
Кстати, если смотреть на кэшированый запрос (CacheSql521.MAC(13)), то при такой ошибке обычно он указывает на длинную строку from (почему-то генерирует все в одну строчку) - может с этим что-то связано?
А можно текст этой длинной строчки показать здесь? в атаче
...
Рейтинг: 0 / 0
06.05.2010, 10:34
    #36614686
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
LexisSTVkolesovПроверить можно так

... DOPFK in ( 'a4' ) не помогло. З любых параметра - ок, как только добавляю 4 - ерор.

А другой четвертый?

А так:

вместо
and
substr(Tax, 1, 2 ) <> 'МС'
написать
and
$extract(Tax, 1, 2 ) <> 'МС'
...
Рейтинг: 0 / 0
06.05.2010, 10:41
    #36614703
LexisSTV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
kolesovLexisSTVkolesovПроверить можно так

... DOPFK in ( 'a4' ) не помогло. З любых параметра - ок, как только добавляю 4 - ерор.

А другой четвертый?

А так:

вместо
and
substr(Tax, 1, 2 ) <> 'МС'
написать
and
$extract(Tax, 1, 2 ) <> 'МС' не помогает. Параметры - любые комбинации 3 из 4 схавывает
...
Рейтинг: 0 / 0
06.05.2010, 12:20
    #36614952
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
LexisSTV,

Мне удалось воспроизвести ошибку.
Дело не в Вашем запросе. Уже сам факт того, что не работает поиск в документации, это подтверждает.

Если Вы используете локаль rusw, то поменяйте в ней через Портал таблицу сортировки по умолчанию с Cyrillic3 на Cache standard .
Или (предпочтительней) создайте свою локаль на основе rusw, сделайте в ней эти изменения и сделайте её текущей в системе.
Не забудьте перезагрузить Caché.

PS: Возможно, Вы захотите также поменять "Сортировку новых глобалов" для баз CACHEAUDIT и USER .
...
Рейтинг: 0 / 0
06.05.2010, 17:53
    #36615916
akihito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
А есть что-то на русском про sql в cache?
...
Рейтинг: 0 / 0
06.05.2010, 17:59
    #36615930
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
akihitoА есть что-то на русском про sql в cache?
База данных Caché
...
Рейтинг: 0 / 0
06.05.2010, 22:31
    #36616402
LexisSTV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
servitLexisSTV,

Мне удалось воспроизвести ошибку.
Дело не в Вашем запросе. Уже сам факт того, что не работает поиск в документации, это подтверждает.

Если Вы используете локаль rusw, то поменяйте в ней через Портал таблицу сортировки по умолчанию с Cyrillic3 на Cache standard .
Или (предпочтительней) создайте свою локаль на основе rusw, сделайте в ней эти изменения и сделайте её текущей в системе.
Не забудьте перезагрузить Caché.

СПАСИБО!!! Все заработало!

Маленкий вопросик в догонку - на что это может повлиять (дело в том что не я разработчик БД, а всего лишь выборки делаю - "по наследству") )
servit
PS: Возможно, Вы захотите также поменять "Сортировку новых глобалов" для баз CACHEAUDIT и USER .
а зачем?
...
Рейтинг: 0 / 0
07.05.2010, 09:13
    #36616651
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
...
Рейтинг: 0 / 0
07.05.2010, 11:24
    #36616942
KSergio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятная ошибка в SQL-запросе
Проблема действительно появилась в 2009.1. на Unicode версиях из-за Cyrillic3. DevChange, который решает проблему JLF310, в релизе он начиная с 2009.1.3. Если версия более ранняя, то стоит заказать AdHoc или обновить версию.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Непонятная ошибка в SQL-запросе / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]