使用MSSQL - 只有存在时才能删除同义词: DROP SYNONYM (Transact-SQL)
但是在Oracle(11g)中删除同义词导致我的脚本错误,如果它没有退出,有没有办法模仿它存在的MSSQL?
答案 0 :(得分:2)
您可以使用PLSQL匿名块:
begin
execute immediate 'drop synonym YOUR_SYNONYM';
exception
when others then
if sqlcode != -1434 then
raise;
end if;
end;
/
如果存在同义词,它将删除它。如果它不存在,它将只是抑制错误。除了“同义词不存在”之外,它还会向调用者提出任何错误。
答案 1 :(得分:1)
您可以使用pragma来定义可以处理的异常。 假设你在循环中做某事......
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;
/
答案 2 :(得分:1)
显然你可以写:创建或替换SYNONYM