ORA-00933: SQL command not properly ended

今天写了一个小的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

ORA-00933: SQL command not properly ended,布布扣,bubuko.com

时间: 2024-12-25 14:48:26

ORA-00933: SQL command not properly ended的相关文章

解决Caused by: java.sql.SQLException: ORA-00933: SQL command not properly ended

是iBATIS.xml这句话出错了 <isNotEmpty prepend="AND" property="beginDt" >a.updatedate >= #beginDt# </isNotEmpty> <isNotEmpty prepend="AND" property="endDt" >a.updatedate >= #endDt# </isNotEmpty>

pl/sql command window 初步接触

pl/sql command window基本操作 PL/SQL Developer应用两年了,今天第一次应用command window. command window类似于sqlplus窗口: 1.用Esc键退出到SQL行. 2.调用存储过程:Begin  procedure xxx(); end; 时,先回车到下一行,再/ ,再按enter键,才能执行出结果. 3.调用存储过程前,需要先打开 set serveroutput on 否则执行不出结果. 4.SQL window中调用完存储过

[Office]利用Excel来解析SQL Command

常常写Stored procedure或者是ADO.NET时,INSERT字符串出错常常还蛮恼人想砸屏幕的(对小弟SQL能力而言啦-),例如下列语法,如果某个字段出错,阅读不易的关系要一个一个去检查,今天看到同事利用Excel来解析和Debug SQL Command的小技巧,偷偷把他学了起来,来分享一下(小弟见识浅薄-也许很多人早就知道了- T__T) INSERT INTO dbo.Customer (ClientID,fname,lname,birthday) values ('B1000

使用plSQL连接Oracle报错,SQL*Net not properly installed和TNS:无法解析指定的连接标识符

1.在64位机器上了64位的oracle客户端.然后装上PL/SQL Developer,但是连接oracle老报这个错: 解决办法:在64位的机器上安装32位的Oracle客户端.这样的话便连接成功. 依据:从安装角度考虑,32bit的平台(操作系统和硬件系统)只支持32bitORACLE的安装:64bit平台既支持32bitORACLE的安装也支持64位ORACLE的安装 2.重新安装32的oracle客户端解决了第一个问题,但是用plsql连接接着报错:“TNS:无法解析指定的连接标识符”

Sql/Plus连接Oracle时候出现sql*net not properly installed 解决办法

在PLSQL Developer选择Tools > Preferences > options > 下的如图所示:"Oracle Home" and "OCI Library" Oracle10g装在d:/oracle/ Oracle Home为d:/oracle/product/10.1.0 OCI Library为d:/oracle/product/10.1.0/Db_1/BIN/oci.dll 配置完以后重新启动PLSQL Developer

(转载)SQL基础--&gt; 约束(CONSTRAINT)

感谢Leshami的分享,原文地址:http://blog.csdn.net/leshami/article/details/5711367 --============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完整性 实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键 域完整性:表中字段值必须与字段数据类型.格式.有效范围相吻合 参照完整性:不能引

oracle之sql查询二

此文章为http://huangsir007.blog.51cto.com/6159353/1854818该片的后续 关于数据库语言查询: SQL> show parameter nls_language; NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ nls_languag

使用SQLMAP对网站和数据库进行SQL注入攻击

from:http://www.blackmoreops.com/2014/05/07/use-sqlmap-sql-injection-hack-website-database/ 0x00 背景介绍 1. 什么是SQL注入? SQL注入是一种代码注入技术,过去常常用于攻击数据驱动性的应用,比如将恶意的SQL代码注入到特定字段用于实施拖库攻击等.SQL注入的成功必须借助应用程序的安全漏洞,例如用户输入没有经过正确地过滤(针对某些特定字符串)或者没有特别强调类型的时候,都容易造成异常地执行SQL

SQL基础--&gt; 约束(CONSTRAINT)

一.几类数据完整性 实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键 域完整性:表中字段值必须与字段数据类型.格式.有效范围相吻合 参照完整性:不能引用不存在的值 自定义完整性:根据特定业务领域定义的需求完整性 保证数据完整性的几种常用方法 约束(最常用) 过程 函数 触发器 实体完整性:primary key.unique.索引(index) 域完整性:check.foreign key.not null.数据类型 参照完整性:foreign key 自定义完整性: