powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование переменной в FROM
10 сообщений из 10, страница 1 из 1
Использование переменной в FROM
    #39490701
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Подскажите такой момент - возможно ли использовать в FROM - переменную?
Типа
Код: plsql
1.
SELECT * FROM call_&table_month



В PL-SQL можно использовать для курсора в виде:

Код: plsql
1.
2.
3.
4.
5.
call_table_name   := 'CALL_' || table_month;

open o_call_s for 
      'SELECT *
        FROM '|| call_table_name ||' cll ...';



Но это никак не получается закинуть в XML.

Наверное запутал с объяснением сути вопроса :))

Вообщем, в XML нужно каким-то образом передавать во FROM переменную, которая будет строковой конкатенацией с началом названия таблицы. Как это сделать, подскажите?
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490706
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Одним словом, вот это работает:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
...
v_start_date:=to_date('01.'||v_month||'.'||v_year,'dd.mm.yyyy');
   v_end_date:=add_months(v_start_date,1);
   
   call_table_month  := to_char(v_start_date, 'MM_YYYY');
   call_table_name   := 'CALL_S_' || call_table_month;
...
    open o_call_s for 
      'SELECT ct.CALT_NAME AS CALT_NAME,
             SUM(cll.SUM_MINUTS) AS MINUTS,
             ROUND((SUM(cll.SUM_VOL_IN) + SUM(cll.SUM_VOL_OUT)) / 1048576, 0) AS VOL_MB,
             SUM(cll.SUM_PRICE_$) AS PRICE
        FROM '|| call_table_name ||' cll, 
             CALL_TYPE ct
       WHERE ct.CALT_ID = cll.CALT_ID
         and cll.subs_id = '||to_char(v_subs_id)||'
       GROUP BY cll.SUBS_ID, ct.CALT_NAME
       ORDER BY SUM(cll.SUM_PRICE_$) DESC';
...



а вместо курсора:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select XMLELEMENT(CHARGES,
                      XMLAGG(XMLELEMENT(CHARGE,
                                        XMLELEMENT(CALT_NAME, CALT_NAME),
                                        XMLELEMENT(MINUTS, SUM(cll.SUM_MINUTS)),
                                        XMLELEMENT(VOL_MB, ROUND((SUM(cll.SUM_VOL_IN) + SUM(cll.SUM_VOL_OUT)) / 1048576, 0)))))
      into v_xml
      SELECT ct.CALT_NAME AS CALT_NAME,
            SUM(cll.SUM_MINUTS) AS MINUTS,
            ROUND((SUM(cll.SUM_VOL_IN) + SUM(cll.SUM_VOL_OUT)) / 1048576, 0) AS VOL_MB,
            SUM(cll.SUM_PRICE_$) AS PRICE
        FROM call_table_name cll, 
             CALL_TYPE ct
       WHERE ct.CALT_ID = cll.CALT_ID
         and cll.subs_id = v_subs_id
       GROUP BY cll.SUBS_ID, ct.CALT_NAME
       ORDER BY SUM(cll.SUM_PRICE_$) DESC;*/



не работает.
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490707
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Warlordв XML нужно каким-то образом передавать во FROM переменную http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490715
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RTFM не помогает)

Можно ли переменную call_table_name, которая равна call_table_name := 'CALL_S_' || call_table_month
вставить в FROM в простом SELECT-запросе?
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490720
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Warlordвставить в FROM в простом SELECT-запросе?Либо всё статично, либо всё динамично.
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490732
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Warlord простом SELECT-запросе?
Если запрос формируется на клиенте - то там и вставляйте.
Еще один велосипедостроительный вариант - собрать таблички во view и использовать pruning по константному значению предиката для исключения из выборки ненужных таблиц.
Если используете редакцию EE - то для решения такой задачи используется partitioning.
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490760
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander WarlordНо это никак не получается закинуть в XML.

Наверное запутал с объяснением сути вопроса :))

Вообщем, в XML нужно каким-то образом передавать во FROM переменную, которая будет строковой конкатенацией с началом названия таблицы. Как это сделать, подскажите?
Код: sql
1.
select dbms_xmlgen.getxmltype('select * from '||call_table_name) from dual


?
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490798
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за советы! Буду пробовать..
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490807
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander WarlordСпасибо за советы! Буду пробовать..

imho, не надо..
...
Рейтинг: 0 / 0
Использование переменной в FROM
    #39490838
Alexander Warlord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кобанчег
Код: sql
1.
select dbms_xmlgen.getxmltype('select * from '||call_table_name) from dual


?

Супер!!! То что надо было. Спасибо огромное!)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование переменной в FROM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]