Анонимный блок в 11g
Мне нужна помощь по этому вопросу.
Я пытаюсь создать анонимный блок pl/sql и при запуске показывает, что он завершен, но не запускает код. Это должно дать мне ошибку, говоря, что имя уже используется существующим объектом. Может ли кто-нибудь помочь мне в этом. Я на самом деле создаю процедуры, но просто пробую этот код в качестве примера.
DECLARE
V_REF_TBL VARCHAR2(100);
V_SQL LONG;
begin
V_REF_TBL :='My_TABLE';
v_SQL :='truncate table '||V_REF_TBL ;
EXECUTE IMMEDIATE V_SQL;
EXECUTE IMMEDIATE 'CREATE TABLE '|| V_REF_TBL ||' parallel 9 nologging pctfree 0 as
select * from dual';
End;
1 ответ
Возможно, вы ищете это:
<<my_block>>
Declare
table_name varchar2(30);
counter number;
Begin
table_name := 'my_table';
select count(*)
into counter
from user_tables
where table_name = Upper(Trim(my_block.table_name)) and
dropped = 'NO';
if counter = 0
then
execute immediate 'create table '||table_name||' as ... etc';
else
execute immediate 'truncate table '||table_name;
execute immediate 'insert into '||table_name' select ... etc';
end if;
end my_block;