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

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

Вызов хранимых процедур из Делфи! ПРОБЛЕМЫ!!! [D5, IB6.x]


Страницы:   1 2

Alex Z ©   (2004-09-06 13:46:00) 

Ув. профессионалы подскажите пожалуйста, почему хранимая процедура может не выполняться(вернее выполняться частично, обновляет не все записи) если я вызываю ее программно из Делфи, но если я выполняю ее из окружения(допустим IBExpert), то она выполняется абсолютно корректно?!!!
Как такое может быть?!!!!
Буду признателен за помощь.
С ув. Александр


Alex Z   (2004-09-10 11:29:00) [1]

>>А эта процедудура на сервере где-нибудь вызывается?
Конечно вызывается!! А как же!!! В Дельфях она некорректно работает!!!:(


TohaNik   (2004-09-09 17:52:00) [2]

А эта процедудура на сервере где-нибудь вызывается?


Alex Z   (2004-09-09 16:50:00) [3]

>>примеры передаваемых параметров?
Я их вообще не использую........


MU   (2004-09-08 17:47:00) [4]

примеры передаваемых параметров?


Alex Z   (2004-09-08 16:43:00) [5]

>IBStoredProc1.ParamByName('VD').AsDate := Date;
>IBStoredProc1.ParamByName('VD1').AsDate := Date;
>когда даты равны VD = VD1,
>то условие
> a.visitdate >=:VD and a.visitdate<:VD1
>не работает

Дело не в параметрах, а в том, что она под одной оболочкой корректно выполняется, а под Делфей некоректно для одних и тех же данных! Вот в чем проблема! ПО сути такого быть не может:( а имеет место!!!


MU   (2004-09-08 13:54:00) [6]

execute procedure NEW_PROCEDURE1('01.01.2004','01.01.2004');

когда даты равны VD = VD1,
то условие
 a.visitdate >=:VD and a.visitdate<:VD1
не работает


MU   (2004-09-08 13:51:00) [7]

>> IBStoredProc1.ParamByName('VD1').AsDate := Date;
>> IBStoredProc1.ParamByName('VD').AsDate := Date;

IBStoredProc1.ParamByName('VD').AsDate := Date;
IBStoredProc1.ParamByName('VD1').AsDate := Date;


Alex Z   (2004-09-08 13:39:00) [8]

Запускаю выполнение запроса в IBExpert:
execute procedure NEW_PROCEDURE1('01.01.2004','01.01.2004');
- не срабатывает. Нажимаю кнопочку запуска процедуры при ее редактировании - все работает.

ДА, в IBConsole тоже не работает!:) Шо за на фиг?!!!


Alex Z   (2004-09-08 13:32:00) [9]

НЕ-А ребяты!! Не работает: та же самая фигня, одни записи обрабатывает, а другие -нет. А в сервисной проге все срабатывает нормально!:(((

Я теряюсь в догадках.........


Alex Z   (2004-09-08 13:27:00) [10]

>>А Вы проповали 'запихать вызов процедуры в ibquery', насколько я знаю какая-то версия IBStoredProc просто кривая.

Надо попробовать!Спасибо за совет! Щаз проверю и сообщу!:)


Domkrat   (2004-09-07 13:37:00) [11]

А Вы проповали 'запихать вызов процедуры в ibquery', насколько я знаю какая-то версия IBStoredProc просто кривая.


Карелин Артем   (2004-09-07 13:15:00) [12]

Alex Z   (07.09.04 13:07) [12]
UnPrepare не надо - это только замедляет работу.


Alex Z   (2004-09-07 13:07:00) [13]

commit делал,это ничего не дало.
>> непоняттные шаманские танцы с UnPrepare и Prepare; - смотрел по книге,как там рекомендовалось вызывать процедуры.
>>А какой смысл в таблице, если всё и так получается одним запросом - дело в том, что по этим данным я строю отчет,в нем группировка по клиентам.Но так как я отображаю много полей, то я не могу их впихнуть в этот запрос потому что придется делать по ним группировку.А если так, то он нифига не посчитает.Вот я и выполняю эту процедуру, чтобы она все посчитала,а я потом группирую записи с помощью Дельфийских отчетов и пишу простой запросик без всяких группировок!!
Может быть как-то можно в запрос с группировкой включить поля, котороые необходимо отображать, но совсем не нужно включать в группировку?Я не знаю.....:(((


Карелин Артем   (2004-09-07 13:04:00) [14]

ЮЮ ©   (07.09.04 08:46) [10]
1) явно мимо...

Alex Z   (06.09.04 13:46)  
Транзакции все подтверждены?


ЮЮ   (2004-09-07 08:46:00) [15]

1) непоняттные шаманские танцы с UnPrepare и Prepare;
2)
>Смысл процедуры в обновлении таблицы и подсчете полной суммы по каждому клиенту.

А какой смысл в таблице, если всё и так получается одним запросом


сергей1   (2004-09-06 18:00:00) [16]

тогда попробуй не storedproc, а просто запихать вызов процедуры в ibquery, может у тебя с параметрами какие-то косяки


LM2   (2004-09-06 17:39:00) [17]

Может Commit надо делать!?


stud   (2004-09-06 17:33:00) [18]

а сам запрос при запуске из программы что возвращает?
> select f.id id,
> sum(b.price)price
> from VISITS a, INVSETIGATION b, DOCTORS c,
> INVEST d, FROMWHOM e , USERS f, hospital g
> where a.id=b.visit_id and b.doctor_id=c.id and
> d.id=b.invest_id and b.fromwhom_id= e.id and
> f.id=a.user_id and g.id = e.hospital_id
> and a.visitdate >=:VD and a.visitdate<:VD1
> group by f.id
>  into :id,:price


Alex Z   (2004-09-06 17:11:00) [19]

Вот как я запускаю процедуру:
 IBStoredProc1.UnPrepare;
 IBStoredProc1.ParamByName('VD1').AsDate := Date;
 IBStoredProc1.ParamByName('VD').AsDate := Date;
 IBStoredProc1.Prepare;
 IBStoredProc1.ExecProc;

А вот сама процедура:
CREATE PROCEDURE NEW_PROCEDURE1 (
   VD DATE,
   VD1 DATE)
RETURNS (
   RETS INTEGER)
AS
declare variable id integer;
declare variable price float;
begin
 for select f.id id,
sum(b.price)price
from VISITS a, INVSETIGATION b, DOCTORS c,
INVEST d, FROMWHOM e , USERS f, hospital g
where a.id=b.visit_id and b.doctor_id=c.id and
d.id=b.invest_id and b.fromwhom_id= e.id and
f.id=a.user_id and g.id = e.hospital_id
and a.visitdate >=:VD and a.visitdate<:VD1
group by f.id
 into :id,:price do
 begin
/*   rets = :price;*/
  update tmp set totalprice = :price where user_id=:id;
 suspend;
 end
end

Смысл процедуры в обновлении таблицы и подсчете полной суммы по каждому клиенту.


Alex Z   (2004-09-06 16:37:00) [20]

да! IBStoredProc!!!
В том то и дело, что такого быть не может, но именно это и происходит!!:(
Хотел написать красивую процедурку, которая бы делала все за меня, а не получилось!


Страницы:   1 2

Наверх

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