Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Параметризированный запрос [D7, PostGreSQL]


Beer_Hunter ©   (2008-05-02 21:55:00) 

Подскажите пожалуйста, очень нужна помощь!!!
Есть хранимая процедура на Pl/pgSQL(СУБД PostGreSQL) (fill_proba), я вызываю её следующим образом:

DataModule2.ADOQuery1.SQL.Text:='select * from "public".fill_proba(:p2)';
DataModule2.ADOQuery1.Parameters.ParamByName('p2').Value := DataModule2.FoxProQuery.Fields[1].Value;
DataModule2.ADOQuery1.Active := true;

Проблема в том, что значение DataModule2.FoxProQuery.Fields[1].Valueдостигает 150 символов и Delphi выдает мне ошибку:
ERROR: identifier too long
DETAIL: Identifier must be less than 64 characters

Неужели нельзя, чтобы значение параметра было больше 64 символов? Если такой вариант возможен, то как этого добиться?


sniknik   (2008-05-03 19:08:00) [1]

> В процедуре нет проблемы
верится с трудом... че-то ты там мудришь.  например с динамически составляемым запросом в котором значение параметра подставляется как имя поля/таблици.

хотя... чего уговаривать? сдесь (показанное) все нормально, и в процедуре (говоришь) тоже все хорошо... значит глюк от гремлина поселившегося в сервере постгресса... вызывай священника беса изгонять, а сюда ты не по адресу зашел. сдесь пустым заверениям не верят.


MsGuns   (2008-05-03 18:48:00) [2]

>Beer_Hunter   (03.05.08 17:40) [5]
>В процедуре нет проблемы, для входных параметров определен тип text- ну если и не безграничный, так уж точно больше 150 символов.

Точно больше ?
Во-многих серверах есть длина чарактера по умолчанию. И она точно не больше 150


Beer_Hunter   (2008-05-03 17:40:00) [3]

В процедуре нет проблемы, для входных параметров определен тип text- ну если и не безграничный, так уж точно больше 150 символов.


Виталий Панасенко(дом)   (2008-05-03 16:25:00) [4]

ДЛЯ охотник за пивом(или пивной охотник) - ясно ж написано: идентификатор слишком длинный, ПОДРОБНОСТИ: идентификатор должен быть короче 64...
символов.:-)


sniknik   (2008-05-03 00:13:00) [5]

да не в нем, а в том как написана процедура. (имхо. не знаток посгреса)


Beer_Hunter   (2008-05-03 00:00:00) [6]

Пробовал устанавливать у парметра всевозможные типы и размер, результат тот же.
Интересно то. что когда пишу:
DataModule2.ADOQuery1.SQL.Text:='select * from "public".fill_proba(:p2)';
DataModule2.ADOQuery1.Parameters.ParamByName('p2').Value := 'Привет';
Все работает отлично, но как только всместо 'Привет', значению параметра присваиваю что-то больше 63 символов, выдает ошибку
ERROR: identifier too long
DETAIL: Identifier must be less than 64 characters

Проблема точно не в PostgreSQl.


sniknik   (2008-05-02 22:12:00) [7]

> чтобы значение параметра было больше 64 символов?
вообщето ошибка говорит не про значение, а про идентификатор (имя). что там имеется в виду хз. (может моя ошибся в переводе?)

> Если такой вариант возможен, то как этого добиться?
можно проверить процедуру, проследить чтобы параметр был подходящего типа и подходящего размера (char(150) или varchar или что там в пострессе)


Наверх

Титульная страница Поиск, карта сайта Написать письмо