Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1 - ОБЗОР баз данных Oracle.doc
Скачиваний:
95
Добавлен:
15.05.2015
Размер:
920.58 Кб
Скачать

Различия между командами sql и sql*Plus

Хотя рабочая среда SQL*Plus прекрасно работает в том случае, если вы не делаете ошибок, она не прощает опечаток, начиная с того момента, как вы нажали на клавишу Enter, чтобы перейти к следующей строке ввода. До сих пор это ограничение не предоставляло нам особых трудностей, так как наши запросы не были длинными. Однако, по мере того как запросы становятся все более и более сложными, вы все чаще остаетесь разочарованными. SQL*Plus допускает некоторую коррекцию введенных операторов с помощью специальной команды, которая называется change (сокращенно — с). Рассмотрим следующий пример, иллюстрирующий этот момент: _•

SQL> SELECT empno, ename, MVL(mgr,'none') mgr,

  1. hiredate, sal, comm, deptno

  2. FROM EMP;

SELECT empno, ename, NVL (mgr, ' none') mgr,

*

ERROR at line 1:

ORA-Q1722: invalid number (неверное число}

SQL> 1

1SELECT empno, ename, NVL (mgr, 'none') mgr,

SQL> c/'none'/0

1 SELECT empno, ename, NVL(mgr,0) mgr,

SQL> /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-S1 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-31 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2650 30

7782 CLARK MANAGER 7839 09-JUNE-81 2450 10

7789 SCOTT ANALYST 7566 19-APR-87 3000 20

7839 KING PRESIDENT 0 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876—ADAMS CLERK 7788 23-MAY-87 1100 20

7900 JAMES CLERK ^698 03-DEC-81 950 30

7902 FORD ANALYST 7556 03-DEC-81 3000 20

793-5 MILLER CLERK 7782 23-JAN-82 1300 10

В этом примере оператор select содержит ошибку, связанную с несовпадением типов данных в функции nvl ( ). Oracle замечает эту ошибку и предупреждает о ней выдачей сообщения ORA-01722,

Могут быть произведены и другие сообщения об ошибках, в том числе и следующее:

ОRA-00904: invalid column name

Эта ошибка означает, что столбца, на который вы ссылаетесь, не существует или его имя было каким-либо образом искажено. Для разрешения этой проблемы вы должны проверить фразу column на предмет наличия в ней опечаток и убедиться, что столбец с таким именем действительно существует в таблице. Иногда в имени столбца могут встречаться такие не буквенно-цифровые символы, как подчеркивания, предназначенные для разделения слов. Следовательно, имя столбца EMPNO совсем не то же самое, что EMP_NO, хотя в концептуальном смысле оба они значат примерно одно и то же.

ORA-00923: FROM keyword not found where expected

Эта ошибка означает, что ключевое слово from не было включено или было записано неправильно. Иногда эта ошибка появляется, если вы постави­ли запятую после имени последнего столбца, перечисленного во фразе select (например, select empno, ename, from emp), так что в первую очередь проверьте оператор на наличие этой распространенной ошибки.

ORA-00942: table or view does not exist

Эта ошибка означает, что набранного вами имени таблицы или представления не существует. Обычно ошибка ORA-00942 означает, что в имени таблицы или представления имеется опечатка или что перед именем таблицы не было специфицировано имя схемы. Эта ошибка исправляется либо путем исправления допущенной в имени опечатки, либо путем указания перед именем таблицы имени схемы. (Альтернативным решением последней проблемы является создание синонимов для таблиц, к которым могут обращаться другие пользователи. Это решение будет обсуждаться в этой книге позже,)

В любом случае метод, используемый для решения проблемы опечаток, состоит в том, что сначала нужно ввести номер строки, содержащей ошибку, чтобы сделать возможным ее редактирование. В предыдущем примере мы сделали это, набрав число 1 (выделено полужирным шрифтом). Затем мы использовали команду change (также выделена полужирным шрифтом) и ввели с ее помощью правильный синтаксис:

с/старое_значение/новое_значение

После того как выполнено требующееся изменение в первом вхождении старого _значения текущей строки, Oracle повторно выводит текущую строку со сделанными изменениями. Обратите внимание, что изменения производятся только для первого вхождения старого_значения. Если изменения должны быть сделаны в конкретном месте строки, следует задать больше символов в параметре старое_значение. Наконец, откорректированный текст может быть выполнен повторно, для чего достаточно ввести в строке приглашения слеш (/), как это было показано в приводившемся примере, или в командной строке SQL*PJus ввести команду run.

Совет Если у вас есть сомнения по поводу разницы между использованием слеша и точки с запятой, помните, что команда слеш повторно выполняет код, в данное время находящийся в операционном буфере SQL *Plus, в то вре­мя как точка с запятой используется для завершения SQL-оператора, который вы набираете в буфер.