2009-05-16 2 views
2

я в настоящее время работает над созданием некоторых сценариев SQL в PL/SQL Developer и я получаю:PL/SQL «Команда SQL не должным образом закончилась» ошибка

SQL Command not properly ended

ошибка, что я не уверен, как решить.

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

CREATE TABLE temp_table as 
    SELECT * FROM table_x 

INSERT INTO temp_table 
    SELECT * FROM table_y 

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

SQL Command not properly ended

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

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

invalid character

Это код, который поднимает неверном характер.

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

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

Добавление точки с запятой вызывает новую ошибку, которая является ошибкой «недопустимый символ». Это код, который вызывает неверную ошибку символа. CREATE TABLE temp_table as SELECT * FROM table_x где x> 1; INSERT INTO temp_table ( SELECT * FROM table_y где х> 1; ) – 2009-05-16 13:58:34

+2

Положите окончательную точку с запятой в конце оператора вставки, а не во внутреннем заявление Выберите – cmptrgeekken

ответ

7

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

2

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

CREATE TABLE temp_table as 
SELECT * FROM table_x; 

INSERT INTO temp_table 
SELECT * FROM table_y; 

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

0

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

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

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

0

Если вы используете сценарий за один шаг в 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; 
/