Страница 1 из 1

Вызов хранимой продцедуры из ARD

Добавлено: 30 июн 2005, 21:21
Lavs
как?
вопрос возможно и тривиальный - как из ard отчета вызвать хранимую продцедуру?
платформа
MS SQL 2000
Galaktika 7.11

Спасибо.

У нас тоже мс скл

Добавлено: 01 июл 2005, 06:30
san
Напрямую думаю что никак. Вызовы процедур в галактике реализованы на уровне драйвер-напсервер.Из прикладного кода это невозможно, т.к. нет объектов для например хранения запрошенных данных.С другой стороны для работы с логической таблицой автоматически генерятся хранимые процедуры. типа ft00000nn-для getfirst,nt0000nn-для getnext.

Re: Вызов хранимой продцедуры из ARD

Добавлено: 01 июл 2005, 12:57
WiRuc
Lavs писал(а):как?
вопрос возможно и тривиальный - как из ard отчета вызвать хранимую продцедуру?
платформа
MS SQL 2000
Galaktika 7.11

Спасибо.
Что эта процедура собой представляет? Если она не возвращает данные, то можно модифицировать триггер у какой-нибудь не используемой таблицы и уже сам триггер будет вызывать нужную ХП. В принципе, таким способом можно даже данные возвращать, но для этого надо модифицировать словарь.

Добавлено: 01 июл 2005, 13:44
Lavs
Спасибо за ответы.
В продцедуре предполагается использвать хитросплетенные запросы. Никаких модификаций с данными происходить не будут. Только выборка. Естественно она будет возвращать некий record-set который средствами ard я бы уже обрабатывал по своему усмотрению.

Добавлено: 01 июл 2005, 15:02
WiRuc
Lavs писал(а):Спасибо за ответы.
В продцедуре предполагается использвать хитросплетенные запросы. Никаких модификаций с данными происходить не будут. Только выборка. Естественно она будет возвращать некий record-set который средствами ard я бы уже обрабатывал по своему усмотрению.
Ну тогда, примерно так:
Добавляешь новую таблицу с соответствующей структурой в словарь. В эту таблицу ХП будет записывать свои результаты. Находишь какую-либо неиспользуемую таблицу, добавляешь туда 1 запись и используешь поля таблицы для передачи параметров в ХП. Модифицируешь триггер на обновление этой таблицы таким образом, чтобы он производил вызов нужной ХП, которая записывает результат своей работы в таблицу. Вот и все. Теперь в ARD отчете вызываешь оператор модификации таблицы с указанием необходимых значений полей (параметры ХП) и после этого можно сразу получать данные из таблицы-результата.

Добавлено: 04 июл 2005, 13:57
san
интересный подход.можно и две таблицы создать. первая для параметров, вторая для результата. и все равно мне не понятно зачем это все надо, что бы быстрее работало чтоли...

Добавлено: 04 июл 2005, 14:23
WiRuc
san писал(а):интересный подход.можно и две таблицы создать. первая для параметров, вторая для результата. и все равно мне не понятно зачем это все надо, что бы быстрее работало чтоли...
В нормально написанной ХП все работает на порядки быстрее, чем в Гаалактике. Особо тяжелая отчетность у меня сделана на ХП, но в галактику я результаты не получаю.

Добавлено: 04 июл 2005, 14:39
oiko
Идеальным вариантом бы был внешний генератор отчета который мог бы вызывать вип и передавать ему параметры расчета а связь с БД генератор отчетов устанавливал своим или ODBC - драйвером сам например кристал репорт.