如何用SQL生成SQL批处理文件?

文章作者 100test 发表时间 2007:03:26 17:54:07
来源 100Test.Com百考试题网


软件环境:
  1、Windows NT4.0 ORACLE 8.0.4
  2、ORACLE安装路径为:C:\ORANT
  
  问题提出:
  1、用户需要对数据库用户下的每一张表都执行一个相同的SQL操作,这时,一遍、一遍的键入SQL语句是很麻烦的
  
  实现方法:
  SQL> set heading off --禁止输出列标题
  SQL> set feedback off --禁止显示最后一行的计数反馈信息
  
  列出当前用户下所有同义词的定义,可用来测试同义词的真实存在性
  0select desc ||tname from tab where tabtype=SYNONYM.
  
  查询当前用户下所有表的记录数
  0select 0select ||tname||,count(*) from ||tname||. from tab where tabtype=TABLE.
  
  把所有符合条件的表的0select权限授予为public
  0select grant 0select on ||table_name|| to public. from user_tables where 《条件》.
  
  删除用户下各种对象
  0select 0drop ||tabtype|| ||tname from tab.
  
  删除符合条件用户
  0select 0drop user ||username|| cascade. from all_users where user_id>25.
  
  快速编译所有视图
  ----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,
  ----因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。
  
  SQL> SPOOL ON.SQL
  SQL> SELECTALTER VIEW ||TNAME|| COMPILE. FROM TAB.
  SQL> SPOOL OFF
  然后执行ON.SQL即可。
  SQL> @ON.SQL
  当然,授权和创建同义词也可以快速进行,如:
  SQL> SELECT GRANT SELECT ON ||TNAME|| TO 用户名. FROM TAB.
  SQL> SELECT CREATE SYNONYM ||TNAME|| FOR 用户名.||TNAME||. FROM TAB.


相关文章


如何在Oracle中用PL_SQL产生随机数
如何用SQL生成SQL批处理文件?
结构化查询语言(SQL)原理
Oracle向MSSQLServer7.0的迁移(一)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛