当前位置:数据库 > Oracle >>

oracle bat执行sql

oracle bat执行sql
 
项目组有一个需求: 
在以XXX开头的所有表空间中,创建名为test表,并将其整理成.bat文件,经过一天的折腾,不断询问度娘,终于完成任务,下面对过程做个小结。 
 
1.bat文件 
Sql代码  
set/p dbname=请输入数据库实例名并按回车:  
set/p username=请输入用户名并按回车:  
set/p password=请输入密码并按回车:  
sqlplus %username%/%password%@%dbname% @init.sql %username% %password% %dbname%   
 
2.init.sql文件 
注:&1 &2 &3的值对应%username% %password% %dbname% 
 
Sql代码  
spool logs/log.log   
conn &1/&2@&3;  
@@test.sql ;  
spool off;  
 
3.test.sql文件 
注意:test.sql的块语句的最未尾,添加斜杠
Sql代码  
declare  
begin  
  for t in (select 'drop table '||tablespace_name||'.'||table_name drop_table  
            from  all_tables  
            where tablespace_name like 'XXX%' and table_name=upper('TEST')) loop  
      --删除表  
      execute immediate t.drop_table;  
  end loop;  
    
  for t in (select 'create table ' || tablespace_name ||'.TEST (   
  id int ,  
  name varchar(2)  
    
  )' c_table   
      from USER_TABLESPACES WHERE tablespace_name like 'XXX%') Loop           
    --创建表  
    execute immediate t.c_table;  
  end loop;  
end;  
/  
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,