Просмотр результатов запроса с параметрами в Oracle
Мне нужно выполнить большие запросы (это было частью 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 ответ
Вы используете анонимный блок кода 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.