powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / BULK COLLECT INTO TABLE
19 сообщений из 19, страница 1 из 1
BULK COLLECT INTO TABLE
    #39564607
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, а как правильно выбрать данные в таблицу.

Есть запрос динамический, возвращающий N колонок
есть заготовленная global temporary table (с достаточным запасом колонок)

Хочу

EXECUTE IMMEDIATE full_sql_data BULK COLLECT INTO TABLE_TT

чтобы результат просто по порядку упала в таблицу, лишние колонки остались пустыми

но что-то под вечер плохо соображаю, спасибо
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39564619
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Динамический select ты написал, а insert не осилил? BULK COLLECT INTO - это вставка в коллекцию, а не global temporary table.
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39564657
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я что-то спросил сам не понял что
в общем нужно просто вставить в таблицу результат запроса, но по количеству колонок они не одинаковы

EXECUTE IMMEDIATE 'INSERT INTO TABLE_TT full_sql_data';

почему на VALUES ругается, вроде ж можно без него?

Если запрос 30 колонок возвращает, а в таблице 50. Или обязательно перечислять в таком случае
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39564660
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leprechaunобязательно перечислять в таком случае
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39564661
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leprechaunEXECUTE IMMEDIATE 'INSERT INTO TABLE_TT full_sql_data';Ты и правда заработался. Отдохни, поспи. Завтра со свежей головой продолжишь - уверен, у тебя все получится.
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39564677
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, спасибо за поддержку)
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39565383
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, снова вечер, только занялся

чего-то не заводится

insert_text := 'INSERT INTO XXHR_TABLE_CHANGE_DATA_TT (' || col_list_to || ')';
insert_text := insert_text || ' ' || full_sql_data;
EXECUTE IMMEDIATE insert_text USING P_DATE;

у меня в запросе одна переменная :P_DATE, правда упоминается очень много раз
получаю ORA-01008: не все переменные привязаны

надо как-то иначе привязывать? я не знаю сколько раз параметр повторяется чтобы его нужно количество через запятую прописать
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39565389
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leprechaun
Код: plsql
1.
insert_text USING P_DATE;

у меня в запросе одна переменная :P_DATE, правда упоминается очень много раз
Код: plsql
1.
'begin ' || insert_text || '; end;' USING P_DATE;


RTFM Repeated Placeholder Names in Dynamic SQL Statements (FAQ)
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39565431
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, завтра попробую
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39567450
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста еще а чем заменить Varchar2 если у меня туда динамический запрос не помещается
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39567471
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leprechaunчем заменить Varchar2 если у меня туда динамический запрос не помещаетсяВ 32к? - Знать быдлозапрос.
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39567472
leprechaun не помещаетсянегоже похваляться размером запроса.
Если не клеится динамика, делай статику. Все равно вставляешь в таблицу с фиксированным количеством полей.
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39567517
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну не знаю.

У меня на входе задано X таблиц с Y полей по шаблону имени из них.
Я сначала строю список всех возможных колонок на основании списка таблиц.
Это формирует структуру заголовка.
Потом обхожу каждую таблицу и заполняю запросы, там где поле существует беру его имя, там где его нет NULL.
Так и у меня получается UNION по каждой табличке. Но если их более 10 и колонок до 100, то конечно размер запроса великоват.

Я изначально на меньшие объемы рассчитывал, потом условие изменилось.
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39567525
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leprechaun,

Какую задачу месье решает таким способом?
Однозначно ли у месье соответствие типов данных и кодировки для одноимённых полей?
Для чего месье нужен именно UNION?
Есть ли у месье необходимость выполнять один большой запрос в одной большой транзакции?
Рассматривал ли месье возможность последовательного выполнения небольших вставок в temporary table с последующей вставкой в целевую из неё, если уж никак кроме динамики не может решить свою задачу?
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39567536
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leprechaunПодскажите пожалуйста еще а чем заменить Varchar2 если у меня туда динамический запрос не помещается

посмотрите dbms_sql


авторTaking VARCHAR2a, table of VARCHAR2(32767) , as an argument. The VARCHAR2A overload version of the procedure concatenates elements of a PL/SQL table statement and parses the resulting string. You can use this procedure to parse a statement that is longer than the limit for a single VARCHAR2 variable by splitting up the statement.

Taking a CLOB statement as an argument . You can use the CLOB overload version of the parse procedure to parse a SQL statement larger than 32K bytes.


.....
stax
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39567565
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
envleprechaun,

Рассматривал ли месье возможность последовательного выполнения небольших вставок в temporary table с последующей вставкой в целевую из неё, если уж никак кроме динамики не может решить свою задачу?

Да, как раз и подумал просто разбить на ряд запросов без UNION.
К юниону чего-то привязался изначально, а без него можно и обойтись.
Спасибо.
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39568395
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, почти закончил своё дело, еще вопросик один остался если можно

insert_text := insert_text || ' ' || full_sql_data || '; EXCEPTION WHEN OTHERS THEN FND_FILE.put_line(FND_FILE.log, ''Ошибка выполнения запроса - '' || lst_of_tbl(l_tbl)); END;';
EXECUTE IMMEDIATE insert_text USING P_DATE;

Если я такой код выполняю в цикле перебора массива, то выпадает ошибка идентификатор 'lst_of_tbl' должен быть объявлен.

Какая там область видимости, как правильно переменную передать чтобы сообщить об ошибке
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39568667
leprechaun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Медленно, но дошло)

BEGIN
EXECUTE IMMEDIATE insert_text USING P_DATE;
EXCEPTION WHEN OTHERS THEN
...
END;
...
Рейтинг: 0 / 0
BULK COLLECT INTO TABLE
    #39570497
вопрос к автору- если без юнионов будешь делать вставки- не получится записей дубликатов ? или физически из разных таблиц забираешь данные ?
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / BULK COLLECT INTO TABLE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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