【发布时间】:2026-01-01 14:10:01
【问题描述】:
我遇到了 oracle 错误,
ORA-00933:SQL 命令未正确结束
如下。
insert into TableOne (name, description, scopeid, readonly)
Select 'access', 'Some Description', 0, 0 from dual
where not exists(SELECT * FROM Privilege WHERE name = 'access')
/
insert into TableTwo (name, uuid, description, scopeid)
Select 'Role','ROLE_UUID','Another description.', 0 from dual
where not exists(SELECT * FROM Role WHERE uuid = 'ROLE_UUID')
/
我在每个语句末尾的“/”之前添加了分号。
有什么我可能错的建议吗?
【问题讨论】:
-
您发布的代码不会引发该错误。相反,第二个
insert将抛出一个不同的错误。您只为四列提供三个值。你会得到 ORA-00947,“没有足够的值”。那是您正在运行的确切代码和唯一代码吗? (你怎么知道错误不是来自其他东西?) -
当我去删除任何敏感名称/描述时,我在第二个查询(Good Catch)上弄错了第二个参数。它在那里,我收到的错误是描述中的错误。我知道错误来自第一个查询,因为我们有一个构建过程正在处理其他文件,直到它到达顶部带有此查询的那个。