为什么SQL Developer中的CONNECT无法按预期的方式工作

时间:2018-09-25 15:35:59

标签: sql oracle11g oracle-sqldeveloper

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

当我输入以下内容时:

CONNECT newuser/newpassword;
SELECT USER from DUAL;

我得到:

Connected.
Connection created by CONNECT script command disconnected

然后我得到 OLDUSER

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

更新

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

  • 当我突出显示CONNECT newuser/newpassword; SELECT USER from DUAL;时 语句,然后按CTRL + ENTER键-我将获得OLDUSER而不是新用户。 这是我之前描述的行为。

  • 当我使用F5运行整个脚本时-我将获得NEWUSER。

回答自己:

  • 对于突出显示的和CTRL + ENTER执行的代码:看起来像SQL Developer的“功能”,导致CONNECT断开连接,就像在突出显示的文本中到达下一个语句之前一样。我发现这有点违反直觉,因为您可以使用相同的高亮+ CTRL + ENTER执行由多个语句组成的事务。他们将执行而不会中断会话。

1 个答案:

答案 0 :(得分:2)

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

当您进行CONNECT时,我们将为您进行连接。然后您的脚本就会执行。

结束后,您的“事务”也将结束-我们断开连接,并将您的会话返回到应有的位置-由“连接面板”中的连接属性定义的连接。

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

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

您要尝试的内容:

enter image description here

因此连接正常,然后我们看到sql语句,并且您正在执行ctrl + enter,因此您希望在数据网格中生成结果,因此我们将代码路径切换回单条语句执行,再切换回主连接(对我来说这是HR )

使用F5会发生什么:

enter image description here

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