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

Oracle SQL Developer 如何通过右键菜单实现拖拽表格生成DML功能

Oracle SQL Developer 18.3 右键生成拖拽等效DML的实现方案

方案1:内置自定义右键菜单扩展(推荐,无额外依赖)

该方案利用SQL Developer原生支持的用户扩展功能,实现完全等效于拖拽的DML生成效果,生成的语句格式和拖拽输出完全一致,不会出现Quick DDL、Export功能的格式不符问题:

  • 打开顶部菜单栏 工具 → 首选项
  • 在左侧目录树依次展开 数据库 → 用户自定义扩展
  • 点击右侧面板的「添加行」按钮,类型下拉选择 ACTION
  • 在代码列填写对应DML的生成逻辑,以下是常用场景的参考代码:
    • 生成全量SELECT语句:
    SELECT 'SELECT * FROM ' || :OBJECT_NAME || ';' FROM DUAL
    
    • 生成带列名的INSERT模板:
    SELECT 'INSERT INTO ' || :OBJECT_NAME || ' (' || LISTAGG(COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY COLUMN_ID) || ') VALUES (' || LISTAGG(':' || COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY COLUMN_ID) || ');' 
    FROM USER_TAB_COLUMNS 
    WHERE TABLE_NAME = :OBJECT_NAME
    GROUP BY TABLE_NAME
    
    • 生成WHERE主键匹配的UPDATE模板:
    SELECT 'UPDATE ' || :OBJECT_NAME || ' SET ' || LISTAGG(COLUMN_NAME || ' = :' || COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY COLUMN_ID) || ' WHERE ' || (SELECT COLUMN_NAME FROM USER_CONSTRAINTS UC JOIN USER_CONS_COLUMNS UCC ON UC.CONSTRAINT_NAME = UCC.CONSTRAINT_NAME WHERE UC.TABLE_NAME = :OBJECT_NAME AND UC.CONSTRAINT_TYPE = 'P' AND ROWNUM = 1) || ' = :PK_VALUE;'
    FROM USER_TAB_COLUMNS 
    WHERE TABLE_NAME = :OBJECT_NAME
    GROUP BY TABLE_NAME
    
  • 在「名称」列填写右键菜单要显示的文字,比如「生成SELECT语句」「生成INSERT模板」,保存配置后重启SQL Developer
  • 重启后右键点击任意表,菜单底部会出现你自定义的选项,点击后直接在当前工作表生成对应DML语句

方案2:调整拖拽偏好(临时替代方案)

如果暂时不想配置自定义扩展,可以先修改拖拽配置降低误触概率:

  • 打开 工具 → 首选项 → 数据库 → 拖放操作
  • 勾选「拖拽时显示操作选择弹窗」,之后拖拽表到工作表时会先弹出选项菜单,不需要控制拖拽速度即可选择要生成的语句类型,大幅降低误触概率
  • 也可以直接将默认拖放行为设置为你最常用的DML类型,无需额外选择即可生成对应语句

注意事项

  • 脚本中的:OBJECT_NAME是SQL Developer内置绑定变量,会自动替换为右键选中的表名,自动适配带Schema前缀的场景
  • 可以根据自身使用需求修改生成逻辑,完全自定义语句格式
  • 18.3版本对自定义扩展的支持稳定,不会影响原有功能正常使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:36:03