如何判断一个directory是否存在,如果此directory存在,则删除此directory,如果此directory不存在,则创建,SQL语句怎么写?

解决方案 »

  1.   

    create or replace procedure pro_test(strName varchar2,strPath varchar2) authid current_user
    as
    num int;
    begin
    select count(*) into num from all_directories where directory_name = upper(strName);
    if num > 0 then
    execute immediate 'drop directory ' || strName;
    else
    execute immediate 'create or replace directory ' || strName || ' as ''' || strPath || ''''; 
    end if;
    end;
    /
      

  2.   

    调用的时候用exec pro_test('name','path');
    其中,参数1是directory的名字,如果存在则删除;
    参数2是路径名,当directory不存在进行创建的时候需要指定相应的路径名。
      

  3.   

    最好使用dba_directories,这里可以看到更多的目录
      

  4.   

    1楼写的很正确,几乎没有办法将DDL与DML结合在一起,只能通过过程和动态sql来实现,很正确。