Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Oracle > Select - Динамичное переоброзование даты |
Автор: flashmaster2008 20.3.2008, 12:18 |
У нас существует клиентское приложение написанное на Oracle Forms. В 50 местах применяется запрос вида select * from calls_00_032008; При переходе на новый месяц мы изменяем руками приложение в 50 местах. Как нам Автоматизировать процесс подстановки имени таблицы с текущим номером месяца в запрос в качестве источника данных?? |
Автор: Sqlninja 20.3.2008, 12:23 | ||
Если есть возможность сформировать SQL руками, то
|
Автор: flashmaster2008 20.3.2008, 12:54 | ||||
Я понял я хочу чтобы это все автоматизировать, как при открытие запроса, оно сама менялось, строку имею виду select * from calls_00_032008 на текущий месяц Ребята примеры дали но оно неработает, Помогите решит мою проблему, Пожалуйста, Заранее благодарью 1. select to_char(sysdate,'MMYYYY') from dual select * from (select 'calls_00_'||to_char(sysdate,'MMYYYY') as calls from dual) select * from calls_00_032008 2.select * from table(fn('calls_00_'||to_char(sysdate,'MMYYYY'))); где fn-табличная функция, в которой есть d-sql 3. ефкурсор для работы, селект формировать динамически, типа str:='select * from calls_00_'||to_char(sysdate,'MMYYYY'); Насколько я помню, там засада будет только с разбором строки по столбцам, надо чтобы структура таблички была фиксирована по типам 4.Маленький примерчик динамического sql. Вот так можно сделать для получения одного значения:
для получения всех данных, как говорил Наивый людь, нужно использовать курсор. 5.
6.create synonym calls_syn for calls_00_032008; |
Автор: Sqlninja 20.3.2008, 13:21 |
Ну правильно , для того SYSDATE и указан чтобы подтягивать автоматом дату и из нее получать имя таблицы. Где ты текст SQL пишешь? Тебе строку надо изменить или чего то другое? |
Автор: flashmaster2008 20.3.2008, 13:33 |
Мне менять надо строку, calls_00_032008. Я пишу на PL/SQL Help me Please ! Для примера calls_00_032008 на calls_00_042008 - строка должна реагировать на текущий месяц. У нас каждый месяц создается таблица ! calls. Пробле в то что у нас много запросов, которые имеют строку calls_00_-текущий месяц |
Автор: Sqlninja 20.3.2008, 15:09 | ||
Получаем: select * from calls_00_032008 |
Автор: puncher 21.3.2008, 15:39 |
обычно делают таблицу, где ведут расчетный месяц, дату начала и дату конца. и все отчеты ссылаются на расчетный месяц. |