2017-02-27 73 views

回答

2

可以使用PLSQL匿名塊:

begin 
    execute immediate 'drop synonym YOUR_SYNONYM'; 
exception 
    when others then 
    if sqlcode != -1434 then 
     raise; 
     end if; 
end; 
/

如果存在的話它會降低你的代名詞。如果它不存在,它只會抑制錯誤。它會向調用者提出除「同義詞不存在」之外的任何錯誤。

1

您可以使用編譯指示來定義可以處理的異常。 假設你在一個循環做的事情......

declare 
     NOSYN exception; 
     pragma exception_init (NOSYN, -1434); 

    /* 1434 is the Oracle error for synonym does not exist */ 

    begin 

    /* 
    * Loop here where you synonym name gets assigned to the variable mysyn 
    */ 


     begin 
      execute immediate 'drop synonym '||mysyn; 
     exception 
      when NOSYN then 
      dbms_output.put_line('Synonym does not exist... skipping'); 
     end; 

     end loop; 
    end; 
    /
1

顯然,你可以這樣寫:CREATE OR REPLACE SYNONYM

+0

你可以。但是,這不會*刪除*同義詞。 – BobC