![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хранимая процедура [D6, MSSQL]
kostet © (2005-09-30 11:54:00)Доброго всем времени суток! Вопрос такой, хранимая процедура возвращает некоторые данные в клиент. Здесь их нужно обработать по событию прихода данных из хранимой процедуры на сервере. Используется компонент ADOStoredProc. На какое событие нужно повесить обработку данных. По идее на событие возврата данных. Но такого события у ADOStoredProc нет. Может ещё какое событие можно использовать. Если нет, то может можно как-то написать слушатель...
ANB (2005-10-03 10:37:00) [1]
> функцианальности языка transact sql
- быть такого не могет. Язык, конечно, слегка птичий, но все, что нужно программисту в нем реализовано. Выкладывай, что не получалось на нем написать - подскажем как это сделать на T-SQL.
Имхо - такая связка - жуткий геморр. И очень неустойчиво будет.
Danilka (2005-10-03 09:00:00) [2]kostet (01.10.05 21:26)
вернее одна работает с ней постоянно, а другая через хранимую процедуру посылает второй программе необходимые данные, т.к. сама с базой на прямую работать не может, для этого и была написана процедура на стороне сервера.
Брр. объясни, плиз, на пальцах, а то мозгов понять не хватает.
1. какая не может работать с базой, та, которая работает с ней постоянно, или вторая, которая получает данные через "хранимую процедуру"?
2. как именно вторая получает данные через хранимую процедуру?
Дело в том, что обработка данных очень сложна, и функцианальности языка transact sql не хватает
Думаю, ты ошибаешься. При работе с кассами и прочее функциональности tsql не будет хватать только в одном случае - когда данных, необходимых для расчетов нет на сервере.
kostet (2005-10-01 21:26:00) [3]Функция может возвращать одно единственное число-идентификатор или набор данных не суть важно. А запрос нельзя использовать потому что этот идентификатор приходит из другой программы, точнее кассы. Архитектура такая: есть две программы работающие с одной базой (вернее одна работает с ней постоянно, а другая через хранимую процедуру посылает второй программе необходимые данные, т.к. сама с базой на прямую работать не может, для этого и была написана процедура на стороне сервера.) Дело в том, что обработка данных очень сложна, и функцианальности языка transact sql не хватает, поэтому решено написать обработку в отдельной программе, которая бы принимала данные с сервера. Ну а чтобы зря не пропадала процедура она параллельно делает выборку данных, который потом отображается в DBGrid.
AlexWlad (2005-09-30 19:42:00) [4]Что такое "некоторые данные"? Если несколько значений переменных - то можно через OUTPUT-параметры. Если рекордсет - то кто запрещает пользовать Open?
Fay (2005-09-30 17:06:00) [5]2 Os © (30.09.05 13:45) [6]
Дело в том, что речь, как Вы заметили, идёт не о IB, а о MSSQL.
2 kostet (30.09.05 11:54)
См. [5]
Os (2005-09-30 13:45:00) [6]А почему нельзя использовать ADOQuery и запрос Select
Sergey13 (2005-09-30 12:50:00) [7]Я может чего не понимаю (с АДО не работал), но наверное у ADOStoredProc тоже есть метод Open (раз что-то возврашается). Наверное после него и можно обрабатывать.
Nikolay M. (2005-09-30 12:40:00) [8]Вопрос по аналогии: какое событие использовать для отлова окончания работы функции извлечения квадратного корня?
ПС
Тема асинхронности выполнения запроса не раскрыта.
ANB (2005-09-30 12:24:00) [9]Можно попробовать через DBLIB, но много писать и результат не гарантирован. А через QA синхронно приезжают ?
Val (2005-09-30 12:19:00) [10]Проблема не ясна. Процедура возвращает сформированный набор данных, т.е. к ним можно обращаться после выполнения процедуры.
ANB (2005-09-30 12:00:00) [11]
> Вопрос такой, хранимая процедура возвращает некоторые данные
> в клиент.
- в виде дейтасета ? Синхронно по времени через ADO не получится, пока вся ХП не отработает.