2

为什么以下插入语句在执行时不起作用sqlplus <connect> @file

INSERT INTO abc ( a
                 ,b
                 ,c)
         VALUES ( '1' --a
                 ,'2' --b
                 ,'3'); --c

但它可以在没有评论的情况下工作,即

INSERT INTO abc ( a
                 ,b
                 ,c)
         VALUES ( '1'
                 ,'2'
                 ,'3');

sqlplus 是否将文件展平,即在一行上执行整个内容?这可能会导致该行的其余部分被注释掉?

4

1 回答 1

10

第一个insert语句不起作用只是因为--c您在语句终止符之后放置的最后一条评论。SQL*Plus 不允许在语句终止符(在这种情况下为';' 分号)之后的任何文本。因此,您的第一条insert语句的此版本将成功执行:

INSERT INTO abc ( a
                 ,b
                 ,c)
         VALUES ( '1' --a
                 ,'2' --b
                 ,'3'); 

这个也是:

INSERT INTO abc ( a
                 ,b
                 ,c)
         VALUES ( '1' --a
                 ,'2' --b
                 ,'3') --c;
于 2013-08-29T16:32:52.977 回答