zoukankan      html  css  js  c++  java
  • ORA-00911无效字符报错

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

    UPDATE MBP_DOC SET CSTATE='200' WHERE CID='123';
    UPDATE MBP_DOC SET CSTATE='200' WHERE CID='234';
    UPDATE MBP_DOC SET CSTATE='200' WHERE CID='456';

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

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

    BEGIN
    UPDATE MBP_DOC SET CSTATE='200' WHERE CID='123';
    UPDATE MBP_DOC SET CSTATE='200' WHERE CID='234';
    UPDATE MBP_DOC SET CSTATE='200' WHERE CID='456';
    END;

    如果只执行一条update语句

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

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

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

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

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

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

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

  • 相关阅读:
    关于Date相关函数在火狐Firefox和谷歌Chrome下的不同
    一键部署 LNMP 建站环境
    Python 返回值、方法和函数的区别
    Python中万物皆对象?的理解
    Python 实用小工具 练习(2)
    Chrome浏览器F12开发者工具使用教程博客汇总
    觅风易语言[21-24、30]
    觅风易语言[1-10]
    觅风易语言[11-20]
    Python Byte类型(API系列)
  • 原文地址:https://www.cnblogs.com/hanpanpan/p/3456436.html
Copyright © 2011-2022 走看看