Oracle SQL Developer - отображать вывод SELECT в окне результатов запроса при использовании PLSQL

Я использую сценарий Oracle SQL Developer для выполнения SELECT, отображая результаты в окне результатов запроса. Затем я копирую/вставляю результаты в шаблон Excel для отчетности.

Я хотел бы заменить скрипт блоком PLSQL, разрешить зацикливание и т. д. Проблема в том, что простой SELECT FROM (без INTO), похоже, не работает в PLSQL.

Есть ли способ использовать PLSQL для отображения результатов выбора в окне, из которого я могу копировать/вставлять?

Примечание. Мне запрещено использовать EXPORT для прямого создания текстовых файлов, что было бы намного лучше, чем копирование/вставка. Существует также стандартный пакет Oracle, который выводит данные в файл непосредственно из PLSQL, но мне также запрещено его использовать.

Это сообщение было помечено как дубликат другого сообщения, в котором спрашивалось, как получить вывод из SELECT, который НЕ был в блоке PL/SQL. Я знаю, как это сделать, и на самом деле это то, что я делаю сейчас, как я уже упоминал в ОП. Как я уже сказал, SELECT без INTO не работает в PL/SQL.


person user2781942    schedule 24.05.2014    source источник
comment
Тема, на которую я ссылаюсь, не отвечает на вопрос выше, но отвечает на вопрос, который вы должны были задать: как я могу получить данные из SQL Developer в Excel. Я не уверен, под какими ограничениями вы на самом деле находитесь, но метод создания вывода CSV, который вы можете вырезать и вставить в текстовый файл, который затем можно открыть в Excel, должен работать почти в каждом сценарии.   -  person APC    schedule 25.05.2014


Ответы (1)


Вы можете создать временную таблицу:

CREATE GLOBAL TEMPORARY TABLE table_name (
    ( column1 datatype null/not null,
      column2 datatype null/not null,
      ...
) ON COMMIT DELETE ROWS;

Затем через каждый цикл вы можете вставить в него свои данные:

INSERT INTO table_name
  (SELECT statement);

Наконец, вы можете использовать оператор select во временной таблице для чтения данных:

SELECT * FROM table_name

а затем удалить таблицу:

drop table table_name;
person Hamid Reza    schedule 25.05.2014
comment
Это не отвечает на вопрос. Кроме того, это не синтаксис Oracle, поэтому этот подход может быть применим к любой базе данных, которую вы используете. создание постоянных объектов базы данных — не лучший способ решить проблему с интерфейсом, подобную этой. - person APC; 25.05.2014
comment
Ты прав. Поэтому я исправил свой ответ. Спасибо за ваш комментарий. - person Hamid Reza; 26.05.2014
comment
Я ценю ответ, но, к сожалению, он не отвечает на вопрос, который я, возможно, не объяснил четко. SELECT * FROM имя_таблицы; команда не может быть запущена из PL/SQL, так что это поставило бы меня точно в то же самое место. - person user2781942; 16.07.2014
comment
Правильный ответ на мой вопрос, основанный на моем исследовании и отсутствии каких-либо ответов, дающих метод, - нет: нет способа отобразить содержимое таблицы в окне результатов SQL программно из PL/SQL. - person user2781942; 16.07.2014