Sql Server中删除库和表的语法?
比如:Sql中删除库的语法如下:if exists (select * from sysdatabases where name = 'bookDB')
drop database bookDB
gocreate database bookDB
go那么Oracel中删除表空间和用户的语法能不能这么写?有这样的语法吗?

解决方案 »

  1.   

    删除用户drop user user_name cascade;
    删除表空间
    DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;似乎没有这样和功能 ,示例表是否存在declare     
        v_isexist number(3,0):=0;   
    begin   
        select count(1) into v_isexist from sys.all_objects where owner = 'TEST' and object_type = 'TABLE' and object_name = 'TAB1';
        if  v_isexist>0 then   
            dbms_output.put_line('exists');   
        else   
            dbms_output.put_line('not exists');             
        end  if;   
    end;
      

  2.   

    当然可以用。不过ORACLE中根本没有DATABASE这个概念。 它有的是schema.
    删除表空间
    DROP TABLESPACE
    删除用户
    DROP USER
      

  3.   

    纠正一下说法,ORACLE中的DATABASE概念与SQL SERVER一个服务类似,更常见的说法是INSTANCE。 而SQL SERVER中的DATABASE对应在ORACLE中的则是SCHEMA。
      

  4.   

    oracle 用户删除
    drop user user_name cascade;
    oracle删除表空间
    drop tablespace tablespace_name including contents and datafiles;
    oracle中一般一个服务器只装一个数据库。这个数据库可以建立很多个方案,这些方案可以提供很多业务应用的支持。这些方案就对应到不同的用户上,用户之间的所属方案访问有严格的权限控制。这跟sqlserver有本质的区别。
      

  5.   

    语法差不多的
    都是DROP 。
      

  6.   

    Oracle Database和 Instance好像不是一个概念
    Database是一组文件
    Instance是一组内存
      

  7.   


    --创建过程
    create or replace  procedure delspace (sp_name in varchar2)
    as
    v_del1 varchar2(100);
    v_name varchar2(100);
    begin
    v_name:=sp_name;
    v_del1:='drop tablespace '||v_name ||' including contents and datafiles';execute immediate v_del1;--这里要注意权限,有的用户没有删除表空间的权限
    exception 
    when others then
    dbms_output.put_line(sqlerrm);
    end;
    --执行,删除表空间
    declare
    begin
    delspace('sp_test2');
    end;--查询表空间
    select * from user_tablespaces where tablespace_name='SP_TEST2';--创建表空间
    create tablespace sp_test2 datafile 'e:/sp_test2.dbf' size 10M;--创建表空间
    --查询是否成功
    select * from user_tablespaces where tablespace_name='SP_TEST';