Набор данных

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Juice
Сообщения: 23
Зарегистрирован: 16 фев 2005, 11:54

Набор данных

Сообщение Juice » 16 фев 2005, 12:09

Возникла такая задача: нужно сделать хранимую процедуру, которая будет работать в несколько этапов. Сначала она должна сделать выборку из нескольких таблиц, а затем уже идут различные действия с этой выборкой - поиск определенных строк, сложный анализ, потом тоже не простой алгоритм расчета основаный на этих даных. Вопрос: как наилучшим образом организовать работу с этой выборкой ? Пока мне на ум приходит только создать временную таблицу и разместить ее там. Может язык интербейс что-то такое поддерживает, типа наборов данных ? Все должно быть выполнено только в одной процедуре

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 16 фев 2005, 17:00

А View сделать не пробовал? :)

Juice
Сообщения: 23
Зарегистрирован: 16 фев 2005, 11:54

Сообщение Juice » 16 фев 2005, 19:09

Понял, что остается только таблицу временную делать (просмотр не к сожалению не подойдет т.к. слишком долгая процедура , которая его будет формировать). Продолжаю писать хранимую процедуру. Пытаюсь в ней создать таблицу, на строчке CREATE TABLE tmp1234_ERT - выдает ошибку! Он что не поддерживает такого?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 16 фев 2005, 19:58

да. в тексте процедур операторы DDL не допускаются.

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 17 фев 2005, 09:23

просмотр не к сожалению не подойдет т.к. слишком долгая процедура , которая его будет формировать
А временную таблицу она не долго будет формировать? :)

Juice
Сообщения: 23
Зарегистрирован: 16 фев 2005, 11:54

Сообщение Juice » 17 фев 2005, 10:03

Может я чего-то не до понимал ? View формируется при каждом запросе кнему, а временная таблица лишь один раз? Вот эта процедура формирования и есть долгая. Запросов к таблице будет много

Дмитрий
Сообщения: 127
Зарегистрирован: 26 окт 2004, 11:05

Сообщение Дмитрий » 17 фев 2005, 10:31

Дык и надо было написать, что будет много запросов. А то пишешь
Сначала она должна сделать выборку из нескольких таблиц, а затем уже идут различные действия с этой выборкой - поиск определенных строк, сложный анализ, потом тоже не простой алгоритм расчета основаный на этих даных.
Тогда только временную таблицу.

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 21 фев 2005, 10:25

Что мешает сделать как ФАК рекомендует?
в вольной интерпретации по памяти выглядит так:
временнтая таблица создается один раз, в ней обязательная колонка типа ИД_сессии+остальные столбцы, в процедуре генерируешь этот ИД_сессии и далее работаешь с таблицей: "селект фром врем_тайбл варе ид_сесии = сгенерированый_номерок" при конце процедуры: "делете фром врем_тэйбл варе ид_сесии = сгенерированый_номерок"

Ответить