Ну да - вроде как. Вот пример, который содержит список операторов, которые вы бы поместили в SQL Developer:
variable v_max_sal number;
exec select max(sal) into :v_max_sal from emp;
select ename from emp where sal = :v_max_sal;
Если вы выполняете их один за другим, все будет в порядке до последнего, который запросит у вас :v_max_sal
значение переменной (а это не то, что вы хотите). Но, если вы выполните последний оператор (или - когда мы это сделаем - весь код) как script (F9
комбинация клавиш в последних версиях), то вы получите финальныйРезультат, как и ожидалось.
Посмотрите, поможет ли это.
[РЕДАКТИРОВАТЬ]
В вашем примере: я попробовал, у меня все в порядке. Вот пример таблицы:
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
SQL> select * From tablea;
BATCHDATE
----------
01.11.2019
SQL>
Это строки, которые я запустил в своем SQL Developer (версия 18.3), нажав F9:
var edate varchar2(20);
exec select distinct case when to_char(max(batchdate), 'd') between 1 and 6 then max(batchdate) - to_char(max(batchdate), 'd') else max(batchdate) end into :edate from tablea;
select * from tablea where batchdate <> to_date(:edate);
Строка exec
должнабудь так длинен , вы не можете разбить его на несколько строк, чтобы он был хорошо отформатирован (по крайней мере, я так думаю - я не мог заставить его работать иначе).
Окончательный результат был(скопировано из окна «Вывод скрипта»):
PL/SQL procedure successfully completed.
BATCHDATE
----------
01/11/2019
Мне ничего не предложили, так что ... это работает для меня. Я не знаю, почему это не для вас. Какую версию SQL Developer вы используете?