![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Залипание" данных при вызове Хранимой процедуры
pic509 © (2006-09-05 15:42:00)Столкнулся с такой проблемой: у меня есть Хранимая процедура с входными параметрами (некоторые из них по умолчанию = null). При первом вызове ХП ExecProc выбираются нужные мне данные. Делаю Close. Затем, сменив данные входных параметров, снова вызываю ХП. И получаю старые данные! Как заставить ХП сбросит предыдущий результат???
pic509 (2006-09-05 17:12:00) [1]Сделал так. Все работает. Спасибо!!!
evvcom (2006-09-05 17:09:00) [2]> [5] pic509 © (05.09.06 16:47)
> Но параметр №1 каким-то образом сохраняется!?
Как это "каким-то образом"? А кто его оттуда вычищал?
> Как сделать инициализацию (сброс) входных параметров ХП.
> Делать влоб ...ParamByName('name').value=null мне кажется
> не красиво
Напиши свою процедурину для очистки всех параметров и вызывай при необходимости. В ней цикл по всем и Params[i].Clear;
Val (2006-09-05 17:04:00) [3]код покажите.
ANB (2006-09-05 16:49:00) [4]
> Пробовал Open. Тот же эффект. Я использую BDE.
Вот тута проблема и порылась.
pic509 (2006-09-05 16:47:00) [5]Просмотрел входные параметры через SQL-monitor:
при первом вызове, к примеру передается параметр №1. Следующий вызов передает параметр №3. Но параметр №1 каким-то образом сохраняется!?
Как сделать инициализацию (сброс) входных параметров ХП. Делать влоб ...ParamByName('name').value=null мне кажется не красиво и громоздко. Можно ли одной командой сделать сброс?
pic509 (2006-09-05 16:08:00) [6]Совсем забыл: я пишу в Делфи 5, база на MS SQL 2000
evvcom (2006-09-05 16:05:00) [7]> [2] pic509 © (05.09.06 15:54)
> Я использую BDE.
Все равно чудес не бывает. Значит в Watch посмотри перед Open, что там в параметрах. А лучше сначала протестируй свою ХП в родной среде разработки. Чего у тебя там? Какая СУБД?
pic509 (2006-09-05 15:54:00) [8]Пробовал Open. Тот же эффект. Я использую BDE.
evvcom (2006-09-05 15:48:00) [9]> [0] pic509 © (05.09.06 15:42)
> При первом вызове ХП ExecProc
Это по-моему в ODAC ExecProc вызывает внутри себя Open. Лучше сам сразу Open вызывай, оно так нагляднее и всем привычнее.
> Затем, сменив данные входных параметров, снова вызываю ХП.
> И получаю старые данные!
Чудес не бывает. Какие компоненты доступа? Если ODAC, поставь Debug := True; и удивись.