![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
flashmaster2008 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.3.2008 Репутация: нет Всего: нет |
У нас существует клиентское приложение написанное на Oracle Forms.
В 50 местах применяется запрос вида select * from calls_00_032008; При переходе на новый месяц мы изменяем руками приложение в 50 местах. Как нам Автоматизировать процесс подстановки имени таблицы с текущим номером месяца в запрос в качестве источника данных?? |
|||
|
||||
Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
Если есть возможность сформировать SQL руками, то
-------------------- It's better to burn out than to fade away. |
|||
|
||||
flashmaster2008 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.3.2008 Репутация: нет Всего: нет |
Я понял я хочу чтобы это все автоматизировать, как при открытие запроса, оно сама менялось, строку имею виду 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 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
Ну правильно , для того SYSDATE и указан чтобы подтягивать автоматом дату и из нее получать имя таблицы. Где ты текст SQL пишешь? Тебе строку надо изменить или чего то другое?
-------------------- It's better to burn out than to fade away. |
|||
|
||||
flashmaster2008 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.3.2008 Репутация: нет Всего: нет |
Мне менять надо строку, calls_00_032008. Я пишу на PL/SQL Help me Please !
Для примера calls_00_032008 на calls_00_042008 - строка должна реагировать на текущий месяц. У нас каждый месяц создается таблица ! calls. Пробле в то что у нас много запросов, которые имеют строку calls_00_-текущий месяц Это сообщение отредактировал(а) flashmaster2008 - 20.3.2008, 13:38 |
|||
|
||||
Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
Получаем: select * from calls_00_032008 -------------------- It's better to burn out than to fade away. |
|||
|
||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
1) используя пример Sqlninja, можешь написать функцию которая с учетом текущей даты возвратит данные. 2) на основе этой функции делаешь вьюху 3) подставляешь во все 50 мест селект из вьюхи |
|||
|
||||
puncher |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 5.12.2007 Репутация: нет Всего: нет |
обычно делают таблицу, где ведут расчетный месяц, дату начала и дату конца.
и все отчеты ссылаются на расчетный месяц. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Oracle" | |
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Oracle | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |