sql - 为什么 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 中有两种不同的行为:
当我突出显示该
CONNECT newuser/newpassword; SELECT USER from DUAL;
语句并 CTRL + ENTER 时 - 我将获得 OLDUSER 而不是新用户。这是我之前描述的行为。当我使用 F5 运行整个脚本时 - 我将获得 NEWUSER。
回答我自己:
- 对于突出显示和 CTRL+ENTER 执行的代码:这似乎是 SQL Developer 的一个“功能”,它导致 CONNECT 断开连接,就像在突出显示的文本中到达下一条语句之前一样。我觉得这有点违反直觉,因为您可以使用相同的高亮 + CTRL+ENTER 来执行由多个语句组成的事务。他们将在不中断会话的情况下执行。
解决方案
在脚本中,我们正在运行您的代码,最后您的事务完成。
当您进行连接时,我们将为您进行连接。并且您的脚本被执行。
当它结束时,您的“事务”也结束了 - 所以我们断开连接,并将您的会话返回到它应该在的位置 - 由连接面板中的连接属性定义的连接。
您会看到 Ctrl+ENTER 和 F5 之间的区别,因为只有 F5 调用我们的脚本引擎,这就是让您可以访问 SQL*Plus 命令(如“CONNECT”)的原因
当您尝试通过 Ctrl+Enter 运行多个操作时,如果我们看到 SQL*Plus 命令,我们将通过脚本引擎发送该命令,但其他查询将在“主”连接上执行。
你正在尝试什么:
所以连接工作,然后我们看到 sql 语句,你正在执行 ctrl+enter,所以你想要数据网格中的结果,所以我们将代码路径切换回单语句执行,然后返回主连接(这对我来说是 HR)
如果你使用 F5 会发生什么:
我们连接并运行查询,这一切都发生在与“limited_privs”模式的“本地”连接中,当完成运行时,“本地”连接关闭,我们再次回到“HR”
推荐阅读
- mysql - MYSQL 加入,卡住了
- c# - 等待后哪个线程继续?
- android-studio - 我在Android Studio工作,由于系统崩溃,一个或多个功能由于频繁的系统崩溃而崩溃。我应该如何恢复它?
- ruby - 在 ruby 中从 AWS Lambda 发送 API 获取请求
- php - 如何制作辅助功能 - laravel
- javascript - 我的搜索命令中的嵌入无法正常工作
- cluster-analysis - 基于零息票收益率曲线的隐含评级
- core-data-migration - NSMigrationManager.migrateStore 和 NSPersistentHistoryTrackingKey
- cmake - 使用 cmake 将变量及其值从一个 ExternalProject 依赖项传递到另一个依赖项(在 zlib 和 libpng 的上下文中)
- jquery - 使用 jquery 从表中删除 tr