Просмотр результатов запроса с параметрами в Oracle - PullRequest
1 голос
/ 21 февраля 2011

Мне нужно выполнить большие запросы (это было частью SP) и посмотреть на их результаты (просто пытаюсь найти ошибку в большом SP со многими объединениями. Я хочу разбить ее на части и запустить их отдельно). Как я могу это сделать, если этот SP имеет несколько параметров? Я не хочу заменять их в коде, было бы здорово просто добавить в заголовок объявление с жестким кодом для этого параметра.

Я пробовал что-то вроде этого:

DECLARE

p_asOfDate DATE :=  '22-Feb-2011';

BEGIN

SELECT * from myTable where dateInTable < p_asOfDate;

END

Но там написано, что я должен использовать ключевое слово INTO. Как я могу просмотреть эти результаты в моей IDE? (Я использую Aqua data studio)

Мне нужно делать это очень часто, поэтому я буду очень рад, если найду простое решение

1 Ответ

1 голос
/ 21 февраля 2011

Вы используете анонимный блок кода pl / sql.В процедурах pl / sql вам необходимо указать целевую переменную для результата.

Поэтому сначала вам нужно определить переменную для хранения результата в разделе объявления, а затем вставить в него данные результата.

DECLARE
  p_asOfDate DATE :=  '22-Feb-2011';
  p_result myTable%ROWTYPE;
BEGIN
  select * into p_result from myTable where dateInTable < p_asOfDate;
END

При этом вы, вероятно, получите более одной возвращенной строки, поэтому я бы использовал курсор для раздельного получения строк.

DECLARE
  CURSOR c_cursor (asOfDate IN DATE) is 
    select * from myTable where dateInTable < asOfDate;
  p_asOfDate DATE :=  '22-Feb-2011';
  p_result myTable%ROWTYPE;
BEGIN
  OPEN c_cursor(p_asOfDate);
    loop
      FETCH c_cursor into p_result;
      exit when c_cursor%NOTFOUND;
      /* do something with the result row here */
    end loop;
  CLOSE c_cursor;
END

Для вывода результатов вы можете использовать что-то подобное дляпример:

dbms_output.put_line('some text' || p_result.someColumn);

В качестве альтернативы вы можете выполнить запрос в командной строке sql (например, sqlplus) и сразу получить результат в виде таблицы.

Надеюсь, я правильно понял ваш вопрос...

обновление

Вот другой способ ввода ваших тестовых данных:

Используйте инструменты environemnt для выполнения SQL-запросов, чтобы напрямую представить свой SQL-операторбез блока pl / sql.

Используйте «&» перед частью переменной, чтобы вызвать приглашение для переменной.

select * from myTable where dateInTable < &p_asOfDate;

Результат должен отображаться в отформатированном видеПо вашему инструмент таким образом.Я не знаю об Аква, но некоторые инструменты имеют функции для определения этих параметров вне кода SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...