-1

これについて助けが必要です。

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;
4

1 に答える 1

0

おそらくあなたはこれを探しています:

  <<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;
于 2013-03-10T12:05:06.483 に答える