Я признаю, что это не очень хорошо, но вы можете запустить несколько execute immediate
внутри блока plsql
в execute immediate
:
begin
execute immediate '
begin
execute immediate ''create table a(c number)'';
execute immediate ''create table b(c number)'';
end;
';
end;
РЕДАКТИРОВАТЬ:
Согласно вашему комментарию, вы можете запустить следующее.
begin
execute immediate '
BEGIN
execute immediate ''
CREATE TABLE NEW_TABLE1 AS
SELECT T1.*, ''''Y'''' PROCESS_FLAG
FROM TABLE1 T1
WHERE T1.PRIMAR_ID IN ( 300000005137174 ,300000005142005)
'';
execute immediate ''
CREATE TABLE NEW_TABLE2 AS
SELECT T2.*, ''''Y'''' PROCESS_FLAG
FROM TABLE2 T2
WHERE T2.CODE IS NULL
AND T2.SECONDARY_ID IN (
SELECT distinct(T_TEMP.PRIMAR_ID)
FROM NEW_TABLE1 T_TEMP
WHERE T_TEMP.PROCESS_FLAG = ''''Y''''
)
'';
END;
';
end;
Также вам может понадобиться переосмыслить вашу проблему.Вам действительно нужно создать таблицу?Можете ли вы не создавать таблицы заранее, а просто сделать простую вставку.Вы можете обойти динамический SQL.