Почему CONNECT в SQL Developer не работает так, как ожидается? - PullRequest
0 голосов
/ 25 сентября 2018

Используя GUI, я подключаюсь как OLDUSER к базе данных.

Когда я набираю следующее:

CONNECT newuser/newpassword;
SELECT USER from DUAL;

Я получаю:

Connected.
Connection created by CONNECT script command disconnected

И после этогоЯ получаю OLDUSER .

Почему это так?Почему CONNECT отключается непосредственно перед выполнением следующего оператора при выполнении кода как выделенного кода в SQL Developer?

UPDATE

Я заметил два разных поведения в SQL Developer:

  • Когда я выделю оператор CONNECT newuser/newpassword; SELECT USER from DUAL; и нажму CTRL + ENTER - я получу OLDUSER вместо нового пользователя.Это поведение, которое я описал ранее.

  • Когда я запускаю весь скрипт с помощью F5 - я получаю NEWUSER.

Чтобы ответить самому себе:

  • Для выделенного и выполненного кода CTRL + ENTER. Это похоже на «особенность» SQL Developer, которая заставляет CONNECT отключаться, как до достижения следующего оператора в выделенном тексте.Я нахожу это немного нелогичным, поскольку вы можете использовать ту же подсветку + CTRL + ENTER для выполнения транзакции, состоящей из нескольких операторов.Они будут выполняться без прерывания сеанса.

1 Ответ

0 голосов
/ 25 сентября 2018

В скрипте мы выполняем ваш код, и в конце ваша транзакция завершается.

Когда вы выполните 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».'снова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...