Чем можно заменить временную таблицу?

PSD
Дата: 22.02.2022 12:50:32
Есть несколько десятков тысяч ID (в ЭКСЕЛЕ ) мне нужно по ним выгребсти данные и таблиц.
Логично было бы загрузить эти ID в таблицу и сделать от нее left join, но на продуктивной базе права только на чтение , нет возможности создавать таблицы.
IN тоже не подходит так как в случае если в таблицах по id ничего нет то строка с этим ID в выгрузке быть должна ....

Есть более элегантное решение чем dual+ union ALL ?

with t as (
select 1 as id from dual
union all
select 2 as id from dual
union all
select 4 as id from dual
) 
PaulWist
Дата: 22.02.2022 12:52:32
XML
Stax
Дата: 22.02.2022 14:31:11
PSD,

если токо ид table компактние
SQL> ed
Wrote file afiedt.buf

  1  select * from table (sys.odcinumberlist(1,2,3))
  2  union all
  3* select * from table (sys.odcinumberlist(4,5,6))
SQL> /

COLUMN_VALUE
------------
           1
           2
           3
           4
           5
           6

6 rows selected.


.....
stax
Dimitry Sibiryakov
Дата: 22.02.2022 14:32:34

PSD
Есть более элегантное решение чем dual+ union ALL ?

Вариант а: выгребать данные по одной записи, в цикле.
Вариант б: выгребать все данные, делать джоин в ёкселе.

Posted via ActualForum NNTP Server 1.5

Кроик Семён
Дата: 22.02.2022 14:37:38
PSD,

я сам этим ни разу не пользовался, но знаю что есть: Private Temporary Table

но придётся как то (инсертами, например) загрузить данные из Excel в той же сессии подключения к БД, что и запросы будете писать
PSD
Дата: 22.02.2022 16:26:18
Кроик Семён, моя версия не понимает привата , а глобал ошибки не выдает ... просто висит до бесконечности.


CREATE PRIVATE TEMPORARY TABLE ora$ptt_my_temp_table (
  id           NUMBER,
  description  VARCHAR2(20)
)
ON COMMIT DROP DEFINITION;


SQL Error [905] [42000]: ORA-00905: отсутствует ключевое слово
PSD
Дата: 22.02.2022 16:28:18
PaulWist, а можно по подробней? XPath запросами сталкивался но не понял как там XML использовать как таблицу и тем более сделать от нее left join.
Кроик Семён
Дата: 22.02.2022 17:01:09
PSD
... но на продуктивной базе права только на чтение , нет возможности создавать таблицы


а в схеме пользователя?
Может, попросить админа чтобы разрешил создавать таблички Вашему юзеру в своей схеме?
Уверен, он пойдёт на такое. Ограничит, возможно, квотой на сколько-то десятков мегабайт и ладушки
Alibek B.
Дата: 22.02.2022 21:23:05
with as select можно сгенерировать (в том же Excel).
А для уменьшения размера sql можно генерировать списки через запятую и далее разбить иерархическим запросом.
SQL*Plus
Дата: 22.02.2022 21:29:36
Кроик Семён
PSD
... но на продуктивной базе права только на чтение , нет возможности создавать таблицы


а в схеме пользователя?
Может, попросить админа чтобы разрешил создавать таблички Вашему юзеру в своей схеме?
Уверен, он пойдёт на такое. Ограничит, возможно, квотой на сколько-то десятков мегабайт и ладушки

+1