PL / SQL“SQL命令未正确结束”错误

时间:2009-05-16 11:47:34

标签: sql plsql scripting

我目前正致力于在PL / SQL Developer中开发一些SQL脚本,我得到了一个:

  

SQL命令未正确结束

错误,我不确定如何解决。

我使用的代码看起来像这样

CREATE TABLE temp_table as
    SELECT * FROM table_x

INSERT INTO temp_table
    SELECT * FROM table_y

如果我执行两个部分(create tableinsert)作为单独的部分,一切运行正常,即选择每个代码块并执行。但是,如果我尝试执行所有操作,请选择所有代码并执行,我会收到错误消息:

  

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 个答案:

答案 0 :(得分:7)

在每个陈述的末尾加上分号。

答案 1 :(得分:2)

试试这个:

CREATE TABLE temp_table as
SELECT * FROM table_x;

INSERT INTO temp_table
SELECT * FROM table_y;

我认为括号弄乱了你。

答案 2 :(得分:0)

括号可用于指定要在其中插入数据的列,如下所示:

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

您收到错误,因为解析器在括号

之间找到了一个选择表达式而不是列列表

答案 3 :(得分: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;
/