Выполнить хранимую процедуру

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Выполнить хранимую процедуру

Сообщение bestonix » 11.04.2012 09:30:29

Здравствуйте

Имею Lazarus 0.9.31 ZEOS 6.6.6

Каким макаром выполнить процедуру из пакета ???
С помощью компонента TZStoredProc никак не получается, выдаёт сообщение Unsupported operation.
Попробовал написать через TZQuery:
Код: Выделить всё
      SQL.Add('begin');
     SQL.Add(' CARDCORRECT.InsTemp1;');
     SQL.Add('end;');
     ExecSQL; 


Ругань на первую строку в позиции 6. Сохраняю этот же скрипт в файл, и выполняю без изменений все идёт на ура.
Сама процедура выглядит до безобразия просто
Код: Выделить всё
procedure InsTemp1
IS
BEGIN
insert into temp1 (seid,  dcid,  oddt,  opdt,  bpgi)
values (1999, 2999, sysdate, sysdate, 3999);
END;
bestonix
новенький
 
Сообщения: 66
Зарегистрирован: 15.04.2010 08:26:00
Откуда: Жигулёвск

Re: Выполнить хранимую процедуру

Сообщение ronin » 11.04.2012 11:34:22

Каким макаром выполнить процедуру из пакета ???


чё за субд? и можно точное сообщение об ошибке, не своими словами?
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: Выполнить хранимую процедуру

Сообщение bestonix » 11.04.2012 11:47:50

ronin писал(а):чё за субд? и можно точное сообщение об ошибке, не своими словами?


СУБД Оракл
Скрин в файле
У вас нет необходимых прав для просмотра вложений в этом сообщении.
bestonix
новенький
 
Сообщения: 66
Зарегистрирован: 15.04.2010 08:26:00
Откуда: Жигулёвск

Re: Выполнить хранимую процедуру

Сообщение ronin » 11.04.2012 11:59:19

я так понимаю у вас ошибки синтаксиса SQL, в Mysql например вызов процедуры производится CALL имя_процедуры, в оракуле вроде так же (могу ошибаться)

Добавлено спустя 1 минуту 1 секунду:
и можно begin end не вставлять
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: Выполнить хранимую процедуру

Сообщение bestonix » 11.04.2012 16:49:45

В общем лажа полная. Никак не получилось "завести" выполнение ХП.
Пришлось все операции выполнять в отдельных скриптах, записанных в TZQuery.
Коряво, но по другому никак пока не получилось, время поджимает.
Надо, чтоб работало, а о правильности и красивости пришлось забыть.
Походу компонента TZStoredProc "висит" для ассортимента, не более, а жаль :(
А может и я чего не догоняю, хорошо бы если так.
bestonix
новенький
 
Сообщения: 66
Зарегистрирован: 15.04.2010 08:26:00
Откуда: Жигулёвск

Re: Выполнить хранимую процедуру

Сообщение WAYFARER » 11.04.2012 18:04:20

bestonix писал(а):Походу компонента TZStoredProc "висит" для ассортимента

Он прекрасно работает с хранимыми процедурами, а вы вызываете процедуру из пакета.
Конструкции типа "имя_пакета.имы_процедуры" он не поймет.
По поводу ошибки при вызове процедуры из анонимного блока, то это ошибка компиляции pl/sql, т.е. исключение на сервере возникает и zeos должен бы быть ни причем. Проверяйте все внимательнее, не попало ли непечатного символа в запрос и т.д.
Попробуйте такую конструкцию:

Код: Выделить всё
SQL.Add('BEGIN CARDCORRECT.InsTemp1; END; /')

или
Код: Выделить всё
SQL.Text:='BEGIN CARDCORRECT.InsTemp1; END; /';


К сожалению проверить мне в данный момент не на чем, от оракла отказались в пользу PostgreSQL.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Выполнить хранимую процедуру

Сообщение ronin » 11.04.2012 19:59:42

Он прекрасно работает с хранимыми процедурами

выдаёт сообщение Unsupported operation


аналогичная ерунда, как вы заставили компонент работать с хранимыми процедурами?

Добавлено спустя 2 минуты 16 секунд:
CLIENT_MULTI_STATEMENTS=true
CLIENT_MULTI_RESULTS=true

??? или ещё как?
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: Выполнить хранимую процедуру

Сообщение WAYFARER » 11.04.2012 22:16:45

CLIENT_MULTI_STATEMENTS=1 ))
Но походу, я ввожу тут народ в заблуждение очередной раз))
Щас отрыл старый исходник утилитки для выгрузки, там только ZQuery используются.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Выполнить хранимую процедуру

Сообщение ronin » 11.04.2012 23:22:53

я уж испугался что зря писал свой класс для работы с процедурами :)
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 231

Рейтинг@Mail.ru
cron