今天在修改缺陷时遇到一个问题,更新数据库字段时一直报错:ORA-00911。sql脚本如下:

UPDATE MBP_DOC SET CSTATE='' WHERE CID='';
UPDATE MBP_DOC SET CSTATE='' WHERE CID='';
UPDATE MBP_DOC SET CSTATE='' WHERE CID='';

该脚本在数据库中可以执行,但是从程序中去访问数据库修改值时就会报错。

报错的原因在于,更新oracle数据库中的字段时,如果一次执行多条语句,就要将这些语句用 BEGIN END;包起来。如上的脚本应改写为:

BEGIN
UPDATE MBP_DOC SET CSTATE='' WHERE CID='';
UPDATE MBP_DOC SET CSTATE='' WHERE CID='';
UPDATE MBP_DOC SET CSTATE='' WHERE CID='';
END;

如果只执行一条update语句

UPDATE MBP_DOC SET CSTATE='' WHERE CID='';

这样也是会报ORA-00911错.此时,就应该去掉末尾的分号;

在程序中,操作的最后一句应该是不加分号的。加了反而会报错。只有一条语句时应该去掉分号,如下:

UPDATE MBP_DOC SET CSTATE='' WHERE CID=''

总结:1 程序中访问oracle数据库的时候,有以下几种情况,都是正确的:

//1 执行一条语句,不加分号
UPDATE MBP_DOC SET CSTATE='' WHERE CID=''
//2 执行一条语句,加分号,加BEGIN  END;
BEGIN
UPDATE MBP_DOC SET CSTATE='' WHERE CID='';
END;
//3 执行多条语句,每句末尾加分号,加BEGIN END
BEGIN
UPDATE MBP_DOC SET CSTATE='' WHERE CID='';
UPDATE MBP_DOC SET CSTATE='' WHERE CID='';
END;

也就是,任何情况下,每一句后面加上分号,然后整个操作用BEGIN END;包起来,都是不会出错的。

ORA-00911无效字符报错的更多相关文章

  1. 关于“ORA-01747: user.table.column, table.column 或列说明无效”的报错。

    今天在工程中遇到“ORA-01747: user.table.column, table.column 或列说明无效”的报错情况,查了一下是由于数据库列名起的不好引起的,名字用到了数据库的关键字.

  2. MySql 插入10位以上长度的字符报错or截断

    当a字段为int类型时: 如果用MyBatis向MySql插入10个字符以上长度的字符串,则会报错. 如果直接在MySql中用sql语句插入10个字符以上长度的字符串,则会变成最大的int类型数值:2 ...

  3. webstorm中sass编译时目录或内容包含中文字符报错

    ruby版本:ruby 2.3.1p112 (2016-04-26 revision 54768) [x64-mingw32] sass版本:Sass 3.4.22 (Selective Steve) ...

  4. phpstorm中sass编译时目录或内容包含中文字符报错

    ruby版本:ruby 2.4.1p111 (2017-03-22 revision 58053) [x64-mingw32] sass版本:Sass 3.4.24 (Selective Steve) ...

  5. java报错java/lang/NoClassDefFoundError: java/lang/Object

    安装完java出错 javac和java -version 都无效,报错如上 解决方法,更改文件中的两个文件(前提是你的 vim  /etc/profile  文件路径写的正确) /usr/java/ ...

  6. Mysql报错......\xE6\x80\xBB\xE7\x9B\x91' for column...

    Mysql添加表中字符报错:Incorrect string value: '\xE6\x80\xBB\xE7\x9B\x91' for column 'postName' at row 1 原因:字 ...

  7. Base64 报错 的解决办法 (Base-64 字符数组或字符串的长度无效。, 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。)

    Base64 报错 的解决办法, 报错如下:1. FormatException: The input is not a valid Base-64 string as it contains a n ...

  8. mybatis项目报错:java.sql.SQLException: ORA-00911: 无效字符 解决方法

    如果你用java写程序访问数据库,出现这个问题:java.sql.SQLException: ORA-00911: 无效字符 at oracle.jdbc.driver.DatabaseError.t ...

  9. SQL报错:ORA-00911:无效的字符错误

    转载自:https://blog.csdn.net/huangyanlong/article/details/38096469 *)ORA-00911:无效的字符错误——由编译环境下一个小错误引起.S ...

随机推荐

  1. ORACLE 检查数据库表中是否存在不规范字 段的语句参考.sql

    --查看是否有除number,char,date,varchar2,clob/blob之外的类型,比如:NVARCHAR2,TIMESTAMP(6),FLOATSELECT DISTINCT a.DA ...

  2. Notes of the scrum meeting(12.7)

    meeting time:18:30~19:10p.m.,December 7th,2013 meeting place:3号公寓一层 attendees: 顾育豪                   ...

  3. PSP0表格二

    一 项目计划日志 周活动总结表 姓名: 陆宇 日期:2015. 3. 21 日期       任务 听课 编写程序 阅读课本 准备考试 日总计/(min) 周日 60 30 90 周一 300 0 1 ...

  4. 理解bashrc和profile[转载]

    这儿有一篇文章不错 https://wido.me/sunteya/understand-bashrc-and-profile/ http://blog.csdn.net/luotuo44/artic ...

  5. 【Anagrams】 cpp

    题目: Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will ...

  6. 代码复用 -- 深入了解javascript

    /* 代码复用 */ /* 一.避免 */ /* 模式1:默认模式 */ function Parent() { this.name = "123"; } Parent.proto ...

  7. dp--poj1458最长公共子序列

    很水的一题 输入串a与串b: Dp[i][j]表示a串中1~i与b串中1~j的子串的最长公共子序列. Max{dp[i-1][j], dp[i][j-1]}       (a[i]!=b[j]) Dp ...

  8. 二分图匹配(KM算法)n^4 分类: ACM TYPE 2014-10-04 11:36 88人阅读 评论(0) 收藏

    #include <iostream> #include<cstring> #include<cstdio> #include<cmath> #incl ...

  9. 奶牛通讯 usaco 网络流

    这道题很有意思,原题是只需输出最小割集大小,现在oj上改成了输出字典序最小的割集: 题解:可以考虑从小到大删边,若删掉这条边后,最小割变小,保持不变,记录此时的最小割大小: 若最小割不变,恢复这条边: ...

  10. DXGI_FORMAT_R8G8B8A8_UNORM_SRGB

    这个类型的resource 后面多个SRGB 表示SRGB空间是指gamma 矫正系数为2.2的色彩空间,这个问题我没有问别人,是我自己是上网查的,我觉得我不是个女人了......我又level up ...