Команды SQL*Plus не попадают в буфер, поэтому редактировать их можно только по ходу ввода с помощью клавиши Backspace.
Утилита SQL*Plus поддерживает несколько команд редактирования текста в буфере. Они представлены в .
Таблица 4. Команды редактирования SQL*Plus.
Команда | Назначение |
A[PPEND] <текст> | Добавляет <текст> в конце строки. |
C[HANGE] /<старая>[/<новая>[/]] | Заменяет в строке подстроку <старая> строкой <новая>. Если <новая> не указана, просто удаляет подстроку <старая>. |
CL[EAR] BUF[FER] | Удаляет все строки из буфера. |
DEL [*] | Удаляет текущую строку. |
DEL <n> [* | <m> | LAST] | Удаляет строку с номером <n>, или со строки <n> до текущей, до строки <m> или до последней строки, соответственно. |
DEL * [<n> | LAST] | Удаляет с текущей строки по строку <n> или до конца, соответственно. |
DEL LAST | Удаляет последнюю строку. |
ED[IT] [<имя файла>[.<расширение>]] | Вызывает текстовый редактор операционной системы и загружает в него буфер или указанный файл. Если редактируется буфер, то в текущем каталоге создается файл afiedt.buf, в котором и находится результат редактирования. Загрузка изменений в буфер выполняется автоматически после выхода из редактора. Стандартный редактор в ОС UNIX задается переменной среды _EDITOR. По умолчанию в ОС UNIX используется редактор ed, а в Windows - Notepad. |
I[NPUT] [<текст>] | Вставляет строку или <текст>, в том числе, из нескольких строк, в буфер после текущей строки. |
LIST [<n> | * | LAST] | Выдает, соответственно, все строки в буфере SQL, строку с указанным номером, текущую или последнюю строку. |
LIST <n> [* | <m> | LAST] | Выдает строку с номером <n>, все строки, начиная со строки с номером <n>, до текущей, строки с номером <m> или до конца буфера, соответственно. |
LIST * [<n> | LAST] | Выдает все строки с текущей строки до строки с номером <n> или до последней строки, соответственно. |
Рассмотрим пример:
SQL> select ename, salary from emp; select ename, salary from emp * ошибка в строке 1: ORA-00904: неверно имя столбца
SQL> c /salary/sal
1* select ename, sal from emp SQL> i where deptno=30;
SQL> /
ENAME SAL ---------- ---------- ALLEN 1600 WARD 1250 MARTIN 1250 BLAKE 2850 TURNER 1500 JAMES 950
6 строк выбрано.
SQL> list
1 select ename, sal from emp 2* where deptno=30