Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Вниз

Вызов хранимых процедур из Делфи! ПРОБЛЕМЫ!!!   Найти похожие ветки 

 
Alex Z   (2004-09-06 13:46) [0]

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


 
Johnmen ©   (2004-09-06 13:56) [1]

Такого быть не может...


 
Карелин Артем ©   (2004-09-06 13:59) [2]

Я солидарен с Johnmen ©   (06.09.04 13:56) [1]


 
Карелин Артем ©   (2004-09-06 14:02) [3]

Хотя проблемы могут быть вызваны неправильными настройками кодировок уже в программе...


 
сергей1   (2004-09-06 14:04) [4]

ты компонентом storedproc пользовался ?


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

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


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

Вот как я запускаю процедуру:
 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

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


 
stud ©   (2004-09-06 17:33) [7]

а сам запрос при запуске из программы что возвращает?
> 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


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

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


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

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


 
ЮЮ ©   (2004-09-07 08:46) [10]

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

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


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

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

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


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

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


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

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


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

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


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

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

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


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

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

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


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

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

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


 
MU ©   (2004-09-08 13:51) [18]

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

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


 
MU ©   (2004-09-08 13:54) [19]

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

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


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

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

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


 
MU ©   (2004-09-08 17:47) [21]

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


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

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


 
TohaNik ©   (2004-09-09 17:52) [23]

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


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

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.035 c
11-1081096004
Delphi5.01
2004-04-04 20:26
2004.10.10
To: Владимиром Кладовым


1-1096135368
Charly22
2004-09-25 22:02
2004.10.10
MDI-интерфейс: проблемы с закрытием дочерних форм.


8-1090333829
Ricks
2004-07-20 18:30
2004.10.10
Воспроизведение MIDI


14-1095956023
VEG
2004-09-23 20:13
2004.10.10
У нас было землетрясение


4-1094282632
Интель
2004-09-04 11:23
2004.10.10
Убить explorer.exe без восстановления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский