Доброго времени суток. Проблем такая: В базе данных (firebird) хранится процедура, при вызове передаем ей некоторые параметры и на основании этих параметров она вносит записи в таблицу. Код (Text): BEGIN i=0; N=0; open Cursor1; FETCH Cursor1 into :n; WHILE (i<n) DO BEGIN times3 = DATEADD(MINUTE,:INTERV1,:times2); times4 = DATEADD(MINUTE,:INTERV, :times1); update record set TIMES = :times2, TIMES_K = :times3 where ((TIMES = :times1) and (TIMES_K = :times4)) and (DATES = :DATESS) and (ID_DOCTOR = :IDD); times2 = times3; times1 = times4; i=i+1; END END При выполнении следующей команды в SQL редакторе IbExpert все работает нормально, вносится 20 записей Код (Text): execute procedure raspis_times ('09:30',20,5,20,'09.10.2011',2) При выполнении следующего кода в php записей выводится 40 Код (Text): $sth = $db->prepare("execute procedure raspis_times ('09:30',20,5,20,'09.10.2011',2)"); $sth->execute(); При выполнении через query то же самое. Результат следующего кода- ошибка. "Call to a member function execute() on a non-object" Код (Text): $sth = $db->prepare("call raspis_times ('09:30',20,5,20,'09.10.2011',2)"); $sth->execute(); В общем как мне через pdo вызвать эту хранимую процедуру. По форуму уже искал, мануалы курил - не получается. т.е SQL код одинаковый, но через php записей получается вдвое больше. А через call вообще работать не хочет. И еще одно уточнение, если в Php скрипте за вызовом процедуры вписать следующий код например: Код (Text): $sth = $db->prepare("INSERT INTO RECORD (DATES,TIMES) VALUES ('09.10.2011','10:00:00')"); $sth->execute(); то он выполнится как положено один раз - запись будет одна. Т.е. php скрипт два раза не вызывается, ошибка не в этом.
Хорошо, тогда напишите хотя бы правильно ли вызывать хранимую процедуру через execute? Во всех примерах что я видел - call. Но почему то call у меня не работает.
Да не, не надо(мне даже неловко стало) я пошутил. Но в каждой шутке есть доля шутки, как говориться. Неужели никто плотно не работал с вызовом процедур. Меня интересует именно вызов хранимой SQL процедуры для сферической базы данных в вакууме через объект PDO
Interbase? может таки не использовать "execute procedure raspis_times" для prepare, а просто и банально "execute raspis_times" ? близкая тема viewtopic.php?t=23526
Актуальная информация: процедура выполняется два раза при вызове лишь через PDO объект. Переписал без PDO, с ibase_* функциями: все работает как часы. Хотелось бы все таки использовать PDO и параллельно выяснить по какой причине происходит такой финт ушами. Может в свете новых данных у кого-нибудь появятся соображения.