11.08.2005, 11:25 | #1 |
Участник
|
NLS_LOWER во View
Oracle и Axapta 3.0
Если делаю query к таблице, то в оракловском запросе к строковым полям и парметрам запроса применяется функция NLS_LOWER. ... SUBSTR(NLS_LOWER(B.DATAAREAID),1,3)=NLS_LOWER('dat') ... Если делаем query к представлению (view), то функция NLS_LOWER к строковым полям не применяется. Зато она успешно продолжает применяться к параметрам. ... A.DATAAREAID=NLS_LOWER('dat') ... Конечно в поле DATAAREAID хранятся значения только со строчными буквами, а если я хочу применить условие к другому полю, в котором ещё и заглавные буквы есть. Можно забыть про это?
__________________
Дмитрий |
|
11.08.2005, 12:00 | #2 |
Участник
|
Это глюк Аксапты.
Мне победить не удалось... Пришлось из-за этого отказать от использования View |
|
13.04.2006, 15:50 | #3 |
Участник
|
Цитата:
Сообщение от sia
Это глюк Аксапты.
Мне победить не удалось... Пришлось из-за этого отказать от использования View под ораклом кто-нибудь придумал как побороть?
__________________
Best wishes, Roman. ~RVS |
|
13.04.2006, 17:34 | #4 |
Модератор
|
А в ролапе разве не победили эту беду?
|
|
14.04.2006, 09:17 | #5 |
Участник
|
Цитата:
Сообщение от George Nordic
А в ролапе разве не победили эту беду?
попробовал только что под MSSQL (мне вчера аж поплохело, как я обнаружил сию "особенность" - отчетность построена частью на view была, но проект под MSSQL) дак вот: под MSSQL вроде бы все работает как надо. Простейшая проверка: открыть view в обозревателе и по строковому полю с большими буковками сделать фильтр. под ораклом таблица становится пустой, под MSSQL - фильтрует. вот вам и минус достоинство оракла перед mssql. понятно, что оракл тут не причем, но минус есть. кто-нибудь поборол эту ерунду? с утра решил покопаться внутри репозитария в надежде, что прямо там лежат классы по созданию текста view - если туда прямо в селект вставить понижение регистра, то это как бы решит проблемму выборки. но здаётся мне, что время зря трачу.
__________________
Best wishes, Roman. ~RVS |
|
14.04.2006, 10:31 | #6 |
Участник
|
Для MS SQL - при создании нового инстанса можно выбрать case sensitive. По умолчанию предлагает нечувствительность к регистру.
Для Axapta'ы - чувствительность к регистру для запросов б/д регулируется параметром CASESENSITIVE, хранящимся в таблице SQLSystemVariables. Для Oracle он включен, для MS SQL выключен (эти параметры устанвливаются при создании б/д и прописаны в классе SqlDatabaseInit). Если включить этот параметр для MS SQL, то в запросы будет добавляться функция "{fn LCASE(%1)}". Причем, сами запросы строятся несколько "небрежно". Вот, например, запрос по пользователям X++: SELECT A.ID,A.DEL_CHECKGENERAL,A.DEL_CHECKAOS,A.DEL_CHECKLABELUSE, A.DEL_CHECKAOTPATHUNIQUE,A.DOCUHANDLINGACTIVE,A.DEL_CHECKDATE, A.DEL_CHECKFEATUREKEY,A.DEL_CHECKLABELANDHELP, A.DOCUTOOLBARBUTTONACTIVE,A.HELPMARKEMPTYLINKS, A.DEL_CHECKSPECIFIC,A.HELPTHEME,A.GENERATEEXECUTIONPLAN, A.EMAIL,A.COMPILERTARGET,A.LANGUAGE,A.RECID FROM SYSUSERINFO A(INDEX(I_956USERIDX) NOLOCK) WHERE (ID={fn LCASE(?)}) ORDER BY A.ID OPTION X++: CREATE VIEW CUSTVIEW AS SELECT A.ACCOUNTNUM AS ACCOUNTNUM,A.NAME AS NAME, A.DATAAREAID AS DATAAREAID,A.RECID AS RECID, B.DATAAREAID AS DATAAREAID#2,B.CUSTGROUP AS CUSTGROUP, B.NAME AS CUSTGROUPNAME FROM CUSTTABLE A,CUSTGROUP B WHERE ({fn LCASE(A.CUSTGROUP)}=B.CUSTGROUP) PS Версия Axapta'ы указана в подписи
__________________
Axapta v.3.0 sp5 kr2 |
|
14.04.2006, 11:27 | #7 |
Участник
|
Цитата:
Сообщение от AndyD
Для MS SQL - при создании нового инстанса можно выбрать case sensitive. По умолчанию предлагает нечувствительность к регистру.
Для Axapta'ы - чувствительность к регистру для запросов б/д регулируется параметром CASESENSITIVE, хранящимся в таблице SQLSystemVariables. Для Oracle он включен, для MS SQL выключен (эти параметры устанвливаются при создании б/д и прописаны в классе SqlDatabaseInit).
__________________
Best wishes, Roman. ~RVS |
|
14.04.2006, 11:33 | #8 |
Участник
|
Цитата:
Сообщение от Roman. ~RVS
т.е. я правильно понимаю, что если его включить под ораклом, то станет все нормально?
стало еще хуже - теперь смена регистра вообще перестала быть - даже логин пришлось вводить большими буквами, а сама аксапта опустела - ни меню ни функционала...
__________________
Best wishes, Roman. ~RVS |
|
14.04.2006, 11:37 | #9 |
Участник
|
Да - надо будет учитывать регистр во всех операциях.
По поводу входа - надо забивать имя пользователя с учетом регистра, тогда загрузится нормально, но работать будет не очень удобно
__________________
Axapta v.3.0 sp5 kr2 |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Распределенная база данных на основе View | 27 | |||
Доступ к VIEW SQL SERVER из Axapta | 13 | |||
Обновление данных в View | 5 | |||
View + Grid + CheckBox | 4 | |||
View's - возможность добавления новых записей | 13 |
|