declare
v_count int;
begin
select count(*) into v_count from user_views
where view_name = '视图名';
if v_count > 0 then execute immediate 'drop view 视图名';
end;
/

解决方案 »

  1.   

    这个我也写过,可是将上面的内容直接按sql字符串执行却不行。不知道是什么原因。
    要执行sql不知道怎么写。
    请帮忙。
      

  2.   

    CREATE OR REPLACE VIEW  VIEWName as 没有的就创建,有的就替换
      

  3.   

    create or replace precodure pro_test(var_view varchar2)
    as
    v_count int;
    begin
    select count(*) into v_count from user_views
    where view_name = '视图名';
    if v_count > 0 then execute immediate 'drop view 视图名';
    end;
    /
    建立过程直接调用,
      

  4.   

    那么现在我想换个问法;我只是想删除视图,直接执行SQL语句那么这条SQL语句如何写,请指教!
      

  5.   

    执行不了是因为你没有给PLSQL授予DDL权限。
    原因是在存储过程中由角色付与的权限会失效。
    嗬嗬!
    wiler(@_@) 的做法是没有问题的
      

  6.   

    我在pl/sql中执行也没有问题,可是我在.net中执行此sql语句就出问题了。
    而且象drop view viewname这样的语句直接执行的话如果没有此名称的视图就会抛异常的,代码并不健壮。