使用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。
回答自己:
答案 0 :(得分:2)
在脚本中,我们正在运行您的代码,最后您的交易完成。
当您进行CONNECT时,我们将为您进行连接。然后您的脚本就会执行。
结束后,您的“事务”也将结束-我们断开连接,并将您的会话返回到应有的位置-由“连接面板”中的连接属性定义的连接。
您会看到Ctrl + Enter和F5之间的区别,因为只有F5会调用我们的脚本引擎,这才使您可以访问SQL * Plus命令(例如“ CONNECT”)
当您尝试通过Ctrl + Enter运行多个命令时,如果我们看到一个SQL * Plus命令,我们将通过脚本引擎发送该命令,但其他查询将在“主”连接上执行。
您要尝试的内容:
因此连接正常,然后我们看到sql语句,并且您正在执行ctrl + enter,因此您希望在数据网格中生成结果,因此我们将代码路径切换回单条语句执行,再切换回主连接(对我来说这是HR )
使用F5会发生什么:
我们连接并运行查询,所有这些都发生在与“ limited_privs”模式的“本地”连接中,当运行完成后,“本地”连接关闭,我们再次回到“ HR”