Конференция "Базы" » Параметризированный запрос [D7, PostGreSQL]
 
  • Beer_Hunter (02.05.08 21:55) [0]
    Подскажите пожалуйста, очень нужна помощь!!!
    Есть хранимая процедура на 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 © (02.05.08 22:12) [1]
    > чтобы значение параметра было больше 64 символов?
    вообщето ошибка говорит не про значение, а про идентификатор (имя). что там имеется в виду хз. (может моя ошибся в переводе?)

    > Если такой вариант возможен, то как этого добиться?
    можно проверить процедуру, проследить чтобы параметр был подходящего типа и подходящего размера (char(150) или varchar или что там в пострессе)
  • Beer_Hunter (03.05.08 00:00) [2]
    Пробовал устанавливать у парметра всевозможные типы и размер, результат тот же.
    Интересно то. что когда пишу:
    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 © (03.05.08 00:13) [3]
    да не в нем, а в том как написана процедура. (имхо. не знаток посгреса)
  • Виталий Панасенко(дом) (03.05.08 16:25) [4]
    ДЛЯ охотник за пивом(или пивной охотник) - ясно ж написано: идентификатор слишком длинный, ПОДРОБНОСТИ: идентификатор должен быть короче 64...
    символов.:-)
  • Beer_Hunter (03.05.08 17:40) [5]
    В процедуре нет проблемы, для входных параметров определен тип text- ну если и не безграничный, так уж точно больше 150 символов.
  • MsGuns © (03.05.08 18:48) [6]
    >Beer_Hunter   (03.05.08 17:40) [5]
    >В процедуре нет проблемы, для входных параметров определен тип text- ну если и не безграничный, так уж точно больше 150 символов.

    Точно больше ?
    Во-многих серверах есть длина чарактера по умолчанию. И она точно не больше 150
  • sniknik © (03.05.08 19:08) [7]
    > В процедуре нет проблемы
    верится с трудом... че-то ты там мудришь.  например с динамически составляемым запросом в котором значение параметра подставляется как имя поля/таблици.

    хотя... чего уговаривать? сдесь (показанное) все нормально, и в процедуре (говоришь) тоже все хорошо... значит глюк от гремлина поселившегося в сервере постгресса... вызывай священника беса изгонять, а сюда ты не по адресу зашел. сдесь пустым заверениям не верят.
 
Конференция "Базы" » Параметризированный запрос [D7, PostGreSQL]
Есть новые Нет новых   [134432   +19][b:0][p:0]