首页 > 解决方案 > 为什么 SQL Developer 中的 CONNECT 不能按预期的方式工作

问题描述

使用 GUI 我以 OLDUSER 身份连接到数据库。

当我输入以下内容时:

CONNECT newuser/newpassword;
SELECT USER from DUAL;

我得到:

Connected.
Connection created by CONNECT script command disconnected

然后我得到OLDUSER

为什么会这样?当您在 SQL Developer 中将代码作为突出显示的代码执行时,为什么 CONNECT 会在到达下一条语句之前立即断开连接?

更新

我注意到 SQL Developer 中有两种不同的行为:

回答我自己:

标签: sqloracle11goracle-sqldeveloper

解决方案


在脚本中,我们正在运行您的代码,最后您的事务完成。

当您进行连接时,我们将为您进行连接。并且您的脚本被执行。

当它结束时,您的“事务”也结束了 - 所以我们断开连接,并将您的会话返回到它应该在的位置 - 由连接面板中的连接属性定义的连接。

您会看到 Ctrl+ENTER 和 F5 之间的区别,因为只有 F5 调用我们的脚本引擎,这就是让您可以访问 SQL*Plus 命令(如“CONNECT”)的原因

当您尝试通过 Ctrl+Enter 运行多个操作时,如果我们看到 SQL*Plus 命令,我们将通过脚本引擎发送该命令,但其他查询将在“主”连接上执行。

你正在尝试什么:

在此处输入图像描述

所以连接工作,然后我们看到 sql 语句,你正在执行 ctrl+enter,所以你想要数据网格中的结果,所以我们将代码路径切换回单语句执行,然后返回主连接(这对我来说是 HR)

如果你使用 F5 会发生什么:

在此处输入图像描述

我们连接并运行查询,这一切都发生在与“limited_privs”模式的“本地”连接中,当完成运行时,“本地”连接关闭,我们再次回到“HR”


推荐阅读