godtrue

今天写了一个小的SQL语句类似下面的这句:

UPDATE A 
SET ID=B.ID 
FROM A,B 
WHERE A.NAME=B.NAME

 

在执行时居然报了“ORA-00933: SQL command not properly ended”这个错误提示信息,SQL语句如此简单,不应该出现错误的!但是事实上确实报错了,仔细看了下没发现那里有问题,百度了一下,出现这个错误的情况还是挺多的,当抛出此错误提示信息,代表着SQL语句本身就是有问题的!(ORA-00933:SQL命令没有正确的结束)比如:

1:可能SQL语句中关键字前后缺少空格

2:Oracle 给表起别名时,直接在表名的后面空格别名就可以,不需要AS

3:SQL 语句中缺少关键字或者多了某个关键字,比如:AND

4:SQL 语句中缺少关键字或者多了某个标点符号,比如:,

5:数据库不同的版本或不同的数据库支持的SQL的语法规则是不一样的,一句SQL语句在一个数据中是正确的在另一个数据库中未必也正确

后来发现,这个错误是很低级的,为了加深印象,在这里特记录一下!在ORACLE数据库中不支持我上面的这种修改的写法,不能如此使用FROM这个关键字,应该这样来写才对(如下所示:)!

UPDATE A 
SET ID=(
        SELECT ID 
        FROM B 
        WHERE A.NAME=B.NAME
       )

参考:

1:http://stackoverflow.com/questions/8940471/sql-error-ora-00933-sql-command-not-properly-ended

2:http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10008.htm#SQLRF01708

 

posted on 2014-06-12 19:04  godtrue  阅读(86187)  评论(0编辑  收藏  举报