首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果存在甲骨文-删除同义词

如果存在甲骨文-删除同义词
EN

Stack Overflow用户
提问于 2017-02-27 17:19:19
回答 3查看 5.9K关注 0票数 3

使用MSSQL -i只能在存在同义词的情况下才能删除它:删除同义词(Transact-SQL)

但是在Oracle (11g)中,drop同义词会导致我的脚本出错,如果它不退出,有什么方法来模仿它存在的MSSQL吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-27 17:25:44

您可以使用PLSQL匿名块:

代码语言:javascript
复制
begin
    execute immediate 'drop synonym YOUR_SYNONYM';
exception
  when others then
    if sqlcode != -1434 then
         raise;
      end if;
end;
/

如果存在,它将删除您的同义词。如果它不存在,它只会抑制错误。它将向调用方引发“同义词不存在”以外的任何错误。

票数 4
EN

Stack Overflow用户

发布于 2017-02-28 17:23:32

显然你可以写:创建或替换同义词

票数 4
EN

Stack Overflow用户

发布于 2017-02-27 17:57:33

您可以使用杂注来定义异常,然后可以处理异常。假设你在循环中做什么.

代码语言:javascript
复制
    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42491900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档