Oracle SQL Developer运行PL/SQL脚本无法显示Query Result查询结果怎么办
解决方案
一、优先排查界面布局误隐藏问题
- 点击顶部菜单栏的「窗口」选项,选择「重置窗口布局为出厂默认」,重启软件后再执行简单查询(如
select * from dual)验证结果标签是否恢复 - 若仅部分标签找不到,可在「窗口」菜单的下拉列表里找到「查询结果」选项,点击即可呼出对应的面板
二、检查偏好设置是否被修改
- 打开顶部菜单栏「工具」-「偏好设置」,在左侧导航栏找到「数据库」-「工作表」
- 确认「在新标签页中显示查询结果」选项处于勾选状态,避免结果被隐藏到其他面板下
三、你的PL/SQL脚本写法存在问题,本身不会自动输出结果集
你当前使用的PL/SQL块中直接通过execute immediate执行动态查询语句,该写法默认只会执行语句不会将结果集输出到Query Result标签页,需要调整脚本写法才能看到查询结果,调整后的参考代码如下:
-- 先声明绑定变量用于接收结果集 var cur refcursor; declare v_tab varchar( 30 ):= 'MD_ALL_DETAIL_'; v_date1 varchar( 30 ):= '0827D'; v_date2 varchar( 30 ):= '0830'; v_tab1 varchar( 30 ); v_tab2 varchar( 30 ); v_sql varchar( 2000 ); begin v_tab1 := v_tab || v_date1; v_tab2 := v_tab || v_date2; v_sql := ' with tab as( select ''' || v_date1 || ''' flag, md1.* from ' || v_tab1 || ' md1 union all select ''' || v_date2 || ''' flag, md2.* from ' || v_tab2 || ' md2 ), tab2 as ( select * from( select tab.flag, tab.cat_mk_code, tab.cat_mk_iden, tab.b_entity_code, tab.b_entity_iden, tab.cat_be_code, tab.cat_be_iden, tab.bucket_code, tab. bucket_iden, tab.m_entity_code, tab.application_code, tab.indicator_code, tab.indicator_iden, tab.measure_value, tab.user_code, tab.lock_flag, tab.alter_date, tab.table_name from tab )pivot( sum( measure_value ) for flag in( ''' || v_date1 || ''' as MEASURE_0, ''' || v_date2 || ''' as MEASURE_1 ) ) ) select * from tab2 where MEASURE_0<>MEASURE_1'; -- 将结果集赋值给绑定变量 open :cur for v_sql; end; / -- 打印结果集 print cur;
注:你原代码里拼接日期字符串的时候没有加单引号,执行会报错,上面的代码也同步做了修正。
四、重置软件配置(无需重装程序)
如果以上方法都无效,可以清除本地配置缓存恢复到初始状态,步骤如下:
- 关闭Oracle SQL Developer
- 打开本地配置目录:Windows系统路径为
C:\Users\<你的系统用户名>\AppData\Roaming\SQL Developer,Mac系统路径为/Users/<你的系统用户名>/.sqldeveloper - 找到名称格式为
systemx.x.x.x.xxx的文件夹,将其重命名为其他名称(比如system_old) - 重启SQL Developer,软件会自动生成新的配置文件夹,所有设置恢复默认,即可解决异常问题。
内容的提问来源于stack exchange,提问作者G. Paquet
相关产品推荐
相关产品推荐

