Боюсь, у вас больше ошибок и проблем, чем строк кода.Это смесь операторов SQL, PL / SQL и привязки переменных других языков.
Поскольку вы используете блок Declare / begin / end , вы находитесь в мире PL / SQL,В мире PL / SQL:
- Вы не можете использовать EXEC , потому что это короткая рука для begin / end , если вы не в PL /SQL.
- Вам не нужно использовать двоеточия для привязки переменных
- Вы не можете выполнить инструкцию SELECT , не поместив результат куда-либо
- Вы не можетевыполнять операторы DDL (CREATE TABLE ...) напрямую.
- Обычно вы не можете ссылаться на таблицы, которые не существуют, когда начинается блок begin / end .
И не забудьте зафиксировать.
Так что решение, вероятно, таково: не используйте PL / SQL.
create global temporary table dateRest (rest number,nerest number);
insert into dateRest(x, y)
select (select count(*) from view2 where restituita=1),
(select count(*) from view2 where restituita=0)
from dual;
commit;