Я работаю над преобразованием TSql в Plsql. Есть несколько таблиц переменные, объявленные и используемые в TSQL, какПеременная таблицы Tsql для Oracle PLSql
DECLARE @table_var table(id_ int ......)
WHILE ...
begin
insert into @table_var select ...
...
select * from @table_var..
Я думаю, что в оракула глобальной временной таблицы можно использовать, но данные будут максимальными 10k строк.
Насколько эффективны глобальные временные таблицы в этом случае? Есть ли другой способ, кроме global temporary table
, и table types
в Oracle для преобразования аналогичного SQL-запроса?
версия Oracle: oracle11g
или oracle12c
В Oracle редко встречается временная таблица, и поскольку вы обнаружили, что она поддерживает только глобальные временные таблицы, а не локальные. Реальный вопрос: спросите себя, действительно ли вам нужно хранить данные в своей собственной структуре - вам нужно что-либо делать с помощью 'table_var', кроме как выбрать его позже, что вы могли бы сделать, выбрав/присоединившись к вашему первоначальному выбрать вместо этого? Вместо этого вы можете использовать типы таблиц на уровне схемы, но они тоже могут быть излишними. Фрагмент слишком мал и расплывчатый, чтобы действительно сказать, что вам нужно. –
В коде есть такая же область, что 'table_var' не может быть заменен на' select' или 'join'. Я не понимал «типы таблиц на уровне схемы», но они могут быть слишком перегружены ... «тип таблицы» или «temp table» для размера данных '10k rows'? – Praveen
Это зависит от того, почему * он не может быть заменен, что вы делаете с этой переменной, сколько раз вы его используете, насколько дорогой запрос, который его заполняет, и т. Д. На данный момент ваш вопрос слишком абстрактен, кроме для одинаково абстрактных ответов * 8-) –