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

Oracle SQL Developer跨库迁移数据报错ORA-00936求助

解决ORA-00936: missing expression错误的方案

你碰到的这个错误根源很明确——INSERT语句的语法用错了!当你通过SELECT子查询批量导入数据时,根本不需要加VALUES关键字,这就是导致Oracle报"缺少表达式"的原因。

为什么会出错?

VALUES关键字是用来插入单行常量值的,比如这种写法是合法的:

INSERT INTO my_table (col1, col2) VALUES ('a', 123);

但如果你要从另一个表(甚至跨库的表)查询数据插入,直接把SELECT语句接在列列表后面就可以,完全不需要VALUES来画蛇添足。

修正后的正确SQL

把你原来的语句去掉VALUES即可,同时别忘了Oracle跨库访问的前提:你需要先创建数据库链接(DB_LINK),所以<SOURCE_DB>和<DESTINATION_DB>其实是你创建的数据库链接名称(如果是同一数据库下的不同用户,那就是用户名)。修正后的代码如下:

INSERT INTO <DESTINATION_DB>.<TABLE_NAME> (COLUMN1, COLUMN2)
SELECT COLUMN1, COLUMN2 
FROM <SOURCE_DB>.<TABLE_NAME> 
WHERE <CONDITION>;

额外注意事项

  • 确认你有访问源表的SELECT权限,以及插入目标表的INSERT权限;
  • 确保源表和目标表的列数据类型完全匹配,避免出现隐式转换错误;
  • 如果是跨库操作,先检查数据库链接是否正常可用,可以用SELECT * FROM DBA_DB_LINKS查看已创建的链接。

内容的提问来源于stack exchange,提问作者Rakesh Narang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:06:54