Использование similar to в procedure

bdfyy
Дата: 04.07.2012 10:41:23
Добрый день народ!

Может кто сталкивался с такой проблемой?

внутри процедуры в конструкции similar to не позволяет использовать escape

возвращает parsing error

если наплевать на это ошибку при компиляции то процедура выполняется правильно, но не позволяет ее вызывать из другой
Ivan_Pisarevsky
Дата: 04.07.2012 10:44:45
bdfyy
возвращает parsing error
Кто возвращает ? эксперт? где тесткейз ?
Dimitry Sibiryakov
Дата: 04.07.2012 11:06:26

Ivan_Pisarevsky
Кто возвращает ? эксперт?

Ну а кто же ещё?.. В Firebird ошибки с таким текстом нету.

Posted via ActualForum NNTP Server 1.5

miwaonline
Дата: 04.07.2012 11:06:52
bdfyy,

Текст процедуры нужен. А без него - ошибка в 17 строке.
miwaonline
Дата: 04.07.2012 11:09:44
Dimitry Sibiryakov
Ну а кто же ещё?.. В Firebird ошибки с таким текстом нету.

Блин, да.
В свойствах базы данных в експерте указан FB 2.1, а используется FB 2.5. А вот насчет "не позволяет вызывать ее с другой" - это как? Так и пишет - "Не позволю"?
Ivan_Pisarevsky
Дата: 04.07.2012 11:10:28
Dimitry Sibiryakov
Ivan_Pisarevsky
Кто возвращает ? эксперт?

Ну а кто же ещё?.. В Firebird ошибки с таким текстом нету.
Ну мож болтливый робин, я ж не ведаю. предположил наиболее вероятный исход.
bdfyy
Дата: 04.07.2012 15:00:42
Ivan_Pisarevsky
bdfyy
возвращает parsing error
Кто возвращает ? эксперт? где тесткейз ?


Да возвращает на стадии компиляции IBExpert
bdfyy
Дата: 04.07.2012 15:05:28
Сам участок процедуры:

......

for select A.DATA
from ISAPOUSTTEXT A
inner join RESOURCES B on (B.ID = A.RESOURCE) and (B.CARDID = :PLCID) and (B.ID > 0) and (A.ENABLED <> 0)
inner join ISAPOU C on (C.ISAOBJID = A.ISAOBJID) and (C.LANGUAGE = 2)
into :DATA
do begin for select distinct A.ID, A.NAME, B.LANGUAGE, B.LOCALIZATION, B.IN_NBR, B.OUT_NBR, B.LOCAL_NBR, 0, A."ORDER", 5, D.OBJTYPEID
from ISAOBJ A
inner join ISAPOU B on (B.ISAOBJID = A.ID) and (A.KINDOBJ = 5)
inner join ISALIBTOTARGETS C on C.ISALIBID = A.LIBID
inner join CARDS D on (D.OBJTYPEID = C.OBJTYPEID) and (D.ID = :PLCID)
where :DATA similar to '%[^A-Z_a-z0-9]' || A.NAME || '\(%' escape '\' <<<<<<<ошибка здесь при компиляции!!!!!!!!!
into :ID, :NAME, :LANGUAGE, :LOCALIZATION, :IN_NBR, :OUT_NBR, :LOCAL_NBR, :IS_INIT, :"ORDER", :KIND, :PLCTYPEID
do begin suspend;
for select distinct ID, NAME, LANGUAGE, LOCALIZATION, IN_NBR, OUT_NBR, LOCAL_NBR, IS_INIT, "ORDER", KIND
from GETUSEDTYPEFORCOMPILER2(:PLCTYPEID, :ID, :KIND)
into :ID, :NAME, :LANGUAGE, :LOCALIZATION, :IN_NBR, :OUT_NBR, :LOCAL_NBR, :IS_INIT, :"ORDER", :KIND
do suspend;
end
end

.......

если запустить отдельно то работает корректно, а если из вот такой процедуры

......
for select distinct A.ID, A.NAME, A.LANGUAGE, A.LOCALIZATION, A.IN_NBR, A.OUT_NBR, A.LOCAL_NBR, A.IS_INIT, A."ORDER", A.KIND
from GETUSEDTYPEFORCOMPILER1(:PLCID) A
order by A.NAME
into :ID, :NAME, :LANGUAGE, :LOCALIZATION, :IN_NBR, :OUT_NBR, :LOCAL_NBR, :IS_INIT, :"ORDER", KINDRES
do suspend;
......

то падает выполнение с except`ном
WildSery
Дата: 04.07.2012 15:05:47
bdfyy,

В свойствах базы версия сервера правильно указана?
WildSery
Дата: 04.07.2012 15:06:36
bdfyy
то падает выполнение с except`ном
А куда уже parsing error делось?