Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: TADPhysPreprocessor.ProcessParam
TADPhysPreprocessor.ProcessParam
Posted: 2007/05/11 11:47
 
Привет, Дмитрий
Есть запрос к Oracle, а в запросе - параметр с длииинным именем (ну, генерируется оно таким). Аж в 30 символов. Причем встречается в тексте 2 раза. Так при обработке первого вхождения subj корежит параметр, а на втором проходе - нет. В результате имеем "ORA-01008: not all variables bound". А на еще более длинном имени даже AV в oraclient можно получить.
И "академические" вопросы: зачем subj пытается обрезать имя параметра до 29 символов, хотя на 30 оракл еще согласный? И в чем смысл трехкратного разбора текста?
Re:TADPhysPreprocessor.ProcessParam
Posted: 2007/05/14 02:14
 
Привет

1) В некоторых версиях OCI длинные имена параметров давали AV. В каких конкретно - не помню, но думаю 8.0.5 - 8.1.5.
2) Обрезание до 29 символов необходимо что бы иметь возможность еще добавить двоеточие 30 символом. Опять таки, в начале 2000х годов 30 символов отводилось на имя с двоеточием, а не только на имя.
3) Трехкратность необходима для:
- получения списка параметров из текста
- препроцессирования текста перед prepare и удаление #10
- выявления позиций некоторых интересных ключевых слов

Удачи,
Дмитрий