Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2013, 10:32   #1
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию Передача параметров множеству процедур и запросов

Есть огромный "запрос", состоящий из 2-х временных таблиц, 8 процедур и одного запроса. Им всем нужно каким то образом передать два параметра - дату начала и дату конца.

Вопрос - как лучше всего это реализовать? Псевдо-код приветствовался бы, а то я на словах часто путаюсь
Bizunov вне форума Ответить с цитированием
Старый 07.06.2013, 10:47   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Сделать "огромную" процедуру, передать ей эти параметры, а она уж пусть разруливает логику "огромного" запроса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.06.2013, 10:54   #3
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Сделать "огромную" процедуру, передать ей эти параметры, а она уж пусть разруливает логику "огромного" запроса
Ну, как вариант, я могу склеить те самые 8 процедур. Но у меня есть еще один запрос, отдельный от процедур, котрый, по сути, делает красивую шапочку для таблицы и считает некоторые итоги. Как с ним быть? Ведь на сколько я знаю, из функции в MYSQL нельзя вернуть таблицу.
Bizunov вне форума Ответить с цитированием
Старый 07.06.2013, 11:13   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А временную таблицу в процедуре можно-то создать? После выполнения процедуры простым селектом и взять из неё сформированные данные.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.06.2013, 11:22   #5
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А временную таблицу в процедуре можно-то создать? После выполнения процедуры простым селектом и взять из неё сформированные данные.
Ок, надо пояснить, наверное. А то я запутался, и Вы, наверное. Вот примерный вид запроса, который должен получиться в итоге:
Код:
DELETE FROM TableForReport;
DELETE FROM TableForReport2;

GenReport('дата начала','дата конца');

SELECT ... Event.setDate BETWEEN 'дата начала' AND 'дата конца' ...
...
Как то так должно получиться...
Bizunov вне форума Ответить с цитированием
Старый 07.06.2013, 11:29   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А в чем проблема, что параметры обязательно нужно только раз передать? Сделайте одну процедуру и параметризированный SELECT
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.06.2013, 11:37   #7
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А в чем проблема, что параметры обязательно нужно только раз передать? Сделайте одну процедуру и параметризированный SELECT
Да проблема в том, что потом этот огроомный запросище надо как то вызвать из костыльного мед. софта. Мне намекнули, типа, делай только два параметра - и все.
Bizunov вне форума Ответить с цитированием
Старый 07.06.2013, 12:02   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Я же писал в #4 - в процедуре данные полученные этим запросом записать во временную таблицу. MySQL позволяет же это. А из софта после вызова процедуры сделать простой SELECT * FROM из этой временной таблицы. Но не нравятся мне все эти примочки, лучше уж оставил бы как в #6
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.06.2013 в 12:08.
Аватар вне форума Ответить с цитированием
Старый 07.06.2013, 13:22   #9
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Я же писал в #4...
Ок, сейчас что нибудь попробую.

Цитата:
Сообщение от Аватар Посмотреть сообщение
как в #6
Угу, мне самому это все не нравится, но как еще написать запрос в 1000 строк - я не знаю.

УПД: Не, создавать еще одну таблицу и забивать ее значениями не вариант, она большой получается - 120 столбцов.
Bizunov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерный массив с использованием процедур и функций без параметров и с параметрами Ekaterinasoroka Паскаль, Turbo Pascal, PascalABC.NET 2 14.04.2013 08:35
Перехват значений параметров POST запросов alumium Работа с сетью в Delphi 2 03.12.2012 00:45
Организация программ с использованием процедур .использованием параметров-значений и параметров переменных Фрейтор 40-500 Помощь студентам 0 02.11.2012 21:58
Организация программ с использованием процедур .использованием параметров-значений и параметров переменных Фрейтор 40-500 Помощь студентам 6 02.11.2012 21:46
Передача параметров Gudzon Общие вопросы Delphi 12 08.02.2007 08:19