Динамическое формирование sql-запроса

Обсуждение технических вопросов работы с системами управления базами данных (СУБД), работе с языком SQL и скриптовыми языками.
gali
Активный участник
Сообщения: 285
Зарегистрирован: 27 мар 2007, 07:43

Re: Динамическое формирование sql-запроса

Сообщение gali »

2юрий
а это выход
просто как-то техподдержка страшно предостерегла меня от попыток напрямую обновлять данные. Я человек впечатлительный, поэтому задушила саму мысль на корню. Но, созданием своей таблички, я вряд ли нанесу большой урон.
спасибо
гениальное все просто
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Динамическое формирование sql-запроса

Сообщение Александр »

остановитесь! :wink: :wink: :wink: и подумайте еще раз - нужно ли засорять базу своими структурами :wink: :wink: :wink: напугал???
лучше все же найти другой подход :wink: :wink: :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Динамическое формирование sql-запроса

Сообщение Юрий »

Кто говорит о постоянных таблицах? :)
Временные таблицы - это таблицы типа #имя.
Они существуют только для конкретного сеанса подключения
к базе данных и если сеанс закрывается таблица автоматически уничтожается.
Тесть никакого засорения базы.
gali
Активный участник
Сообщения: 285
Зарегистрирован: 27 мар 2007, 07:43

Re: Динамическое формирование sql-запроса

Сообщение gali »

здОрово! пойду почитаю про временные таблицы
gali
Активный участник
Сообщения: 285
Зарегистрирован: 27 мар 2007, 07:43

Re: Динамическое формирование sql-запроса

Сообщение gali »

[quote="Юрий"]Временные таблицы - это таблицы типа #имя.
quote]
а как же тогда имя таблицы подставить в запрос отчета? параметром? а съест ли?
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Динамическое формирование sql-запроса

Сообщение Юрий »

Если речь идет о пользовательском отчете, то я нашел хитрый ход! :)
Может кому еще пригодится. :wink:
Зная что лоция не закрывает соединение с базой можно смело использовать
временные таблицы но не забывать их чистить!

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

Код: Выделить всё

select * from LSDBO.our_dummy
create table #tmp2 (ii int)
delete #tmp2
insert into #tmp2 (ii) values (2)
insert into #tmp2 (ii) values (3)
select * from LSDBO.our_dummy
Первая и последняя строки нужны для "дурения" проверщика Лоции.
между ними можно производить любые действия по наполнению временной таблицы #tmp2
Далее нажимаем кнопку "SQL" и наш скрипт отрабатывает и у нас есть временная таблица.

Далее создаем другой отчет, который и будет производить отрисовку данных
Выставляем его в режим "Пользовательский", переходим на вкладку "Отчет"
И пишем в "SQL запрос":

Код: Выделить всё

select * from #tmp2
Затем нажимаем кнопку "SQL" и разрисовываем этот отчет.
Затем возвращаемся в первый отчет становимся на вкладку "Свойства" и выбираем наш второй отчет
в поле "Связанный отчет" Сохраняем и запускаем.
Получаем наш хитрый отчет с временной таблицей! :) :wink:

P.S.: Надо быть предельно внимательным при написании скрипта, потому что на этапе проверки он
выполняется. Поэтому нужно создать скрипт отдельно, например в квери аналайзере, а затем уже переносить
в отчет.

Интересно узнать Ваше мнение об этом? :wink:
gali
Активный участник
Сообщения: 285
Зарегистрирован: 27 мар 2007, 07:43

Re: Динамическое формирование sql-запроса

Сообщение gali »

если это работает! тогда просто обалдеть!
надо пробовать
мне пару дней надо, чтобы закрыть текучку. потом обязательно проверю. мне кажется, это решение.
Юрий, спасибо - это не то слово
:)
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Re: Динамическое формирование sql-запроса

Сообщение Старик Крупский »

Сейчас точно не вспомню. Может быть это вообще было в f_ExecSQLSelect. Хотя... В понедельник на работе попробую
"Лучше меньше, да лучше" (C)
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Re: Динамическое формирование sql-запроса

Сообщение Старик Крупский »

Вот таким образом у меня все работает:

f_EmbeddedSQLSelect ( this , select1 + select2 , '' , 'string_arr' )
+ f_RetrieveForm ( this , '' , 'string_arr' )
+ f_FormDataToArray ( this , 'string_arr' )
"Лучше меньше, да лучше" (C)
gali
Активный участник
Сообщения: 285
Зарегистрирован: 27 мар 2007, 07:43

Re: Динамическое формирование sql-запроса

Сообщение gali »

Старик Крупский, а это, пардон, в какое место? у меня возникла ассоциация с формами в workflow. хотя... возможно, виной понедельник
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: Динамическое формирование sql-запроса

Сообщение Anderyt »

это уже мы начали говорить о докобороте?
select1 и select2 - это как раз куски запросов, да?
и что, можно в зависимости от значений каких то параметров включать и выключать определенные куски в итоговом запросе, так что ли?
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Re: Динамическое формирование sql-запроса

Сообщение Старик Крупский »

to gali:
...и я попыталась втолкнуть часть запроса в параметр. Понимаю, глупо, но так нужно!
Это я к этому. Ну и ессно в формы докоборота

to Anderyt:
Ну да, вроде. Меня gali попросила вспомить, как из кусков запрос слепить, вот я и вспомнил. Теперь получается, что на твой вопрос положительный ответ.
Кстати, здесь сильно помогло то, что Лоция отключила проверку запросов в редакторе выражений. Раньше проверяли и что-то там не срасталось. Переменные на момент проверки были без значений и запрос определялся как ошибочный. Сейчас стало удобнее. Проверить запрос ведь можно и другими средствами.
"Лучше меньше, да лучше" (C)
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: Динамическое формирование sql-запроса

Сообщение Anderyt »

хе-хе, ну это тоже очень хорошо, что в докобороте можно :-)
а у меня проблема была в отчетах.. есть отчеты для поиска каких-либо объектов с помощью запроса, и вот надо было при построении запроса учитывать, какие аргументы заданы..
я так понимаю, f_EmbeddedSQLSelect для отчетов не подойдет?..
лучше день потерять, потом за пять минут долететь!
gali
Активный участник
Сообщения: 285
Зарегистрирован: 27 мар 2007, 07:43

Re: Динамическое формирование sql-запроса

Сообщение gali »

2Anderyt
а ты не обратил внимание на совет Юрия? Мне кажется, это выход. Я просто не могу сейчас попробовать, буквально еще день
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: Динамическое формирование sql-запроса

Сообщение Anderyt »

нет, не обратил.. то ли просто не понял, о чем речь (реально не понял, кстати), то ли не понял, как это может помочь решить мою задачу...
лучше день потерять, потом за пять минут долететь!
Ответить