PL / SQL «SQL-команда не правильно завершилась» ошибка - PullRequest
2 голосов
/ 16 мая 2009

В настоящее время я работаю над разработкой некоторых сценариев SQL в PL / SQL Developer и получаю:

Команда SQL неправильно завершена

ошибка, которую я не знаю, как ее решить.

код, который я использую, выглядит примерно так

CREATE TABLE temp_table as
    SELECT * FROM table_x

INSERT INTO temp_table
    SELECT * FROM table_y

Если я выполняю две части (create table и insert) как отдельные части, все работает нормально, то есть выбираем каждый блок кода и выполняем. Однако, если я пытаюсь выполнить все, выбрать весь код и выполнить, я получаю сообщение об ошибке:

Команда SQL неправильно завершена

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

Добавление точки с запятой вызывает новую ошибку, которая является ошибкой:

недопустимый символ

Это код, который вызывает ошибку недопустимого символа.

CREATE TABLE temp_table as 
    SELECT * FROM table_x where x > 1; 

INSERT INTO temp_table 
    ( 
    SELECT * FROM table_y where x > 1; 
    )

Ответы [ 4 ]

7 голосов
/ 16 мая 2009

Поставьте точку с запятой в конце каждого оператора.

2 голосов
/ 17 мая 2009

Попробуйте это:

CREATE TABLE temp_table as
SELECT * FROM table_x;

INSERT INTO temp_table
SELECT * FROM table_y;

Я думаю, что круглые скобки запутали вас.

0 голосов
/ 18 мая 2009

Если вы запускаете скрипт за один шаг в PL / SQL Developer, вам может потребоваться преобразовать его в скрипт «SQL * Plus» - т. Е. Точки с запятой необходимы для разделения оператора, а затем косая черта / (прямая косая черта) ) требуется для запуска оператора, например:

CREATE TABLE temp_table as 
    SELECT * FROM table_x where x > 1;
/

INSERT INTO temp_table 
    SELECT * FROM table_y where x > 1;
/
0 голосов
/ 17 мая 2009

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

INSERT INTO temp_table (col1, col2, ... coln) SELECT ...

Вы получаете ошибку, потому что вместо списка столбцов парсер находит выражение выбора в скобках

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