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

执行INSERT SQL语句报ORA-00926缺失VALUES关键字错误如何解决

ORA-00926 错误原因及修复方案

错误原因

你写的第一行INSERT语句只声明了要插入的表和字段,没有跟上对应的VALUES子句就直接写了下一条INSERT语句,Oracle解析SQL时找不到第一行INSERT对应的VALUES,就会抛出missing VALUES keyword错误。

另外你第四条插入语句的第三个字段值是'Cloridrato de Metformina',和第一行声明的posologia(用法用量)字段的业务含义不符,建议核对调整。

修复方案

你可以根据需求选择以下两种修复方式:

方式1:保留逐条插入逻辑

删掉第一行多余的无VALUES的INSERT语句即可,如果你想避免表结构变更后插入出错,可以给每条INSERT都加上字段声明:

INSERT INTO T_RECEITA_MEDICAMENTO (cd_receita, cd_medicamento, posologia) VALUES (1, 2, '2x ao dia');
INSERT INTO T_RECEITA_MEDICAMENTO (cd_receita, cd_medicamento, posologia) VALUES (2, 1, '6x ao dia');
INSERT INTO T_RECEITA_MEDICAMENTO (cd_receita, cd_medicamento, posologia) VALUES (3, 3, '1 comprimido a cada 12 horas');
-- 请确认本条的posologia字段值符合业务要求后再执行
INSERT INTO T_RECEITA_MEDICAMENTO (cd_receita, cd_medicamento, posologia) VALUES (2, 1, 'Cloridrato de Metformina');

方式2:12c以上版本用批量插入语法

如果你的Oracle版本为12c及以上,可以用INSERT ALL语法一次性插入多条,执行效率更高:

INSERT ALL
INTO T_RECEITA_MEDICAMENTO (cd_receita, cd_medicamento, posologia) VALUES (1, 2, '2x ao dia')
INTO T_RECEITA_MEDICAMENTO (cd_receita, cd_medicamento, posologia) VALUES (2, 1, '6x ao dia')
INTO T_RECEITA_MEDICAMENTO (cd_receita, cd_medicamento, posologia) VALUES (3, 3, '1 comprimido a cada 12 horas')
INTO T_RECEITA_MEDICAMENTO (cd_receita, cd_medicamento, posologia) VALUES (2, 1, 'Cloridrato de Metformina')
SELECT 1 FROM DUAL;

内容的提问来源于stack exchange,提问作者Daniel Alves Soares

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:39:00