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;包起来,都是不会出错的。

  • 相关阅读:
    Luogu P2016 战略游戏(树形DP)
    Luogu P2486 染色(树链剖分+线段树)
    Luogu P3178 树上操作(树链剖分+线段树)
    Luogu P2590 树的统计(树链剖分+线段树)
    Luogu P2146 软件包管理器(树链剖分+线段树)
    获得spring
    网卡绑定多个ip
    描述01-配置文件咋整
    进程查看
    端口查看,进程杀死
  • 原文地址:https://www.cnblogs.com/hanpanpan/p/3456436.html
Copyright © 2011-2022 走看看