• Oracle : ORA 00933: SQL command not properly ended


    ORA-00933: SQL command not properly ended
    

    基于这个报错,网上有很多答案,包括:
    1.在INSERT语句中使用了JOIN或者ORDER BY
    2.在UPDATE语句中使用了JOIN
    3.在DELETE语句中使用了ORDER BY
    4.在SELECT语句中使用了UNIONUNION ALL,并且在非结尾的地方使用了ORDER BY
    5.在SELECT语句表之间忘记了逗号,
    6.在Oracle 8i中使用INNER JOIN或类似的关键词(这些是在Oracle 9i中实现的)
    7.遗漏逗号,遗漏括号,子语句使用错误
    ...
    比较好的博客有How To Resolve ORA-00933 SQL Command Not Properly Ended
    可以说这个问题产生的原因五花八门
    我的问题也很奇怪,我使用Navicat直连数据库,并执行语句进行测试,测试通过

    delete from d1 
    where ID in 
    (select d1.ID 
    from d1 
    join d2 
    on d1.d2ID = d2.ID 
    where d2.xxx = '...');
    

    执行结果

    > Affected rows: 0
    > 时间: 0.013s
    

    但使用Oracle.DataAccess或者Oracle.ManagedDataAccess执行该语句的时候,报错:

    ORA 00933: SQL command not properly ended
    

    这令我百思不得其解,后来通过测试发现:把最后的分号去掉就可以了,即变成:

    delete from d1 
    where ID in 
    (select d1.ID 
    from d1 
    join d2 
    on d1.d2ID = d2.ID 
    where d2.xxx = '...')
    

    这里Mark一下,如果有知道这个问题原因的大神,希望可以科普一下~

    参考资料

    C#连接Oracle数据库的方法

    -----------------------后记------------------------------------------
    我去stackoverflow上面问了一下:简单来说,不需要在最后加分号
    ORA 00933: SQL command not properly ended with C#

  • 相关阅读:
    TensorFlow基础篇
    MySql分类
    VISUAL STUDIO 调试
    排序分类
    位分类
    Visio分类
    工作线程AfxBeginThread的使用
    Windows Live Writer配置步骤
    用户界面线程AfxBeginThread的使用
    WIndows 相关知识
  • 原文地址:https://www.cnblogs.com/Lulus/p/14035023.html
Copyright © 2020-2023  润新知