PL/SQL 开发人员看不到插入语句的结果

PL/SQL Developer Can't See Results Of Insert Statement

正如标题所说 - 当我执行“INSERT”语句时,除非我 re-open PL/SQL 开发人员,否则我看不到结果。

为了让事情更清楚一点: 在我对空 table "worker_temp" -

执行此语句后
insert into worker_temp
select * from worker_b

我看到已经插入了100条记录:
但是当我尝试使用此查询查看结果时:

select * from worker_temp;

我仍然看到空的 table:



但是只有在我退出 PL/SQL Developer 和 re-open 它之后,我才能看到我之前插入的记录:

有没有办法在不关闭 re-opening PL/SQL 开发人员的情况下查看更改?

到目前为止我尝试过的:

我尝试通过右键单击 table 来刷新它:

而且我还尝试刷新整个 tables 文件夹:

我也试过提交 -

commit;

但我不确定那是什么。

与工具无关的方式:

begin
insert into worker_temp
select * from worker_b;
commit;
end;

从所有屏幕截图来看,您可能会在正在使用的 'each' 选项卡中获得单独的数据库会话 - 这是一件好事。您必须在执行插入的同一会话上发出提交。另一种理解方式:

begin
  insert into worker_temp select * from worker_b;
  DBMS_OUTPUT.PUT_LINE('Rows inserted but not committed ' || SQL%ROWCOUNT);
  -- 'undo' the insert by rolling back the insert instead of commit.
  rollback;
end;

PL/SQL Developer 中的默认设置是多会话:

这意味着您打开的每个编辑器 window 都会在单独的会话中登录到数据库中。一个会话在提交之前看不到另一个会话的更改。这有点像在网络驱动器上保存共享的 Excel 电子表格。在您完成更改之前,没有人可以看到您的更改,您会欣赏这是 multi-user 数据库中的一项重要功能。

在 PL/SQL Developer 中,Multi session 默认设置意味着您可以在一个 SQL [=40] 中启动 long-running 查询=],然后在另一个地方继续做其他事情而不会被阻止而不必等待它。使用此设置,您需要在任何其他编辑器 window 可以看到它们之前提交您的更改。工具栏中有Commit和Rollback图标,也可以输入commit;然后执行。

但是,我总是将我的设置为 双会话,这意味着所有 windows 都是同一会话的一部分,即使这意味着我有时不得不等待一些事情.我发现这大大简化了事情,而且我可以在多个 windows 之间进行更改而无需提交,这在使用全局临时表或 alter session 命令时很有用。

this setup guide 阅读更多内容。