You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行Oracle SQL时出现ORA-00933错误,求助问题原因及解决方法

错误原因

  • 核心触发ORA-00933报错的问题是INSERT语句语法不符合Oracle规范:Oracle原生不支持单条INSERT语句后跟随多个逗号分隔的VALUES组实现批量插入,该写法是MySQL等其他数据库的语法,放到Oracle中执行会被判定为命令未正确结束。
  • 额外存在两处不规范/错误写法:
    1. points字段定义为NUMBER(3)数值类型,插入的380、280不需要加单引号包裹,虽然Oracle支持隐式类型转换不会直接报错,但属于不规范写法
    2. SELECT语句中的>是大于号>的HTML转义形式,直接放到SQL引擎中执行会识别失败,需要替换为原生的>符号

修正后可正常执行的SQL代码

-- 建表语句无错误,可直接执行
CREATE TABLE student
(
    idnumber VARCHAR2(8),
    firstname VARCHAR2(20),
    lastname VARCHAR2(20),
    dateofbirth DATE,
    address VARCHAR2(20),
    email VARCHAR2(20),
    programme VARCHAR2(5),
    points number(3),
    PRIMARY KEY (idnumber)
);

-- 插入数据写法1:拆分为多条独立INSERT语句
INSERT INTO student 
VALUES ('D1234567', 'Student ONE', 'TWO THREE', DATE '2000-05-10',
        'Thetown, the address', 'd1234567@mydit.ie', 'DT228', 380);
INSERT INTO student 
VALUES ('D2345678', 'Student TWO', 'FOUR FIVE', DATE '2000-04-10',
        'Thetown, the address', 'd2345678@mydit.ie', 'DT228', 280);

-- 插入数据写法2:用Oracle原生的INSERT ALL批量插入语法
/*
INSERT ALL
INTO student VALUES ('D1234567', 'Student ONE', 'TWO THREE', DATE '2000-05-10', 'Thetown, the address', 'd1234567@mydit.ie', 'DT228', 380)
INTO student VALUES ('D2345678', 'Student TWO', 'FOUR FIVE', DATE '2000-04-10', 'Thetown, the address', 'd2345678@mydit.ie', 'DT228', 280)
SELECT 1 FROM DUAL;
*/

-- 查询语句修正转义符
SELECT 
    firstname, lastname
FROM 
    student
WHERE 
    points > 300;

内容的提问来源于stack exchange,提问作者Christina .V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:39:05