·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
Oracle数据库常见问题答疑(二)
http://www.21tx.com 2005年10月11日

1 2 下一页

  问:利用QUERY选项输出数据
  
  我知道在Oracle8i中,可以使用QUERY有选择地输出表数据。我想用EXP命令来实现,但没有成功。下面是我所写的命令,以及得到的错误信息:
  
  exp ddd/ddd file=/dbf/u11/customer.dmp
  
  tables=AASC.AST_CUSTOMER_KEEP
  
  query=\'where CUA_TRANS_DTS \<
  
  add_months\(sysdate, -6\)\'
  
  table_export[2]: CUA_TRANS_DTS: not found.(没有找到)
  
  答:操作系统不同,用来指定QUERY=参数的方法也不同。WHERE 语句里面往往有很多特殊的字符,如=.>.<和空格等等。而UnixWindows操作系统中的外壳命令提示是不欢迎这些字符的,这些字符将被忽略。你应该根据不同的操作系统采用不用的方法。我一般使用带有QUERY选项的参数文件(PARFILE),利用PARFILE,可以不考虑操作系统平台而使用完全相同的方法。
  
  下面给出一个例子。我用select * from all_objects建立了一个表T,我希望输出所有object_id 小于5000的行。在Windows中,必须这样做:
  
  C:\exp>exp userid=tkyte/tkyte tables=t
  
  query="""where object_id < 5000"""
  
  注意:在windows中,需要在WHERE语句的两端使用三个双引号。在UNIX中,必须这样做:
  
  $ exp userid=/ tables=t query=\"where
  
  object_id \< 5000\"
  
  exp userid=/ tables=t parfile=exp.par
  
  如果使用包含query="where object_id < 5000"的PARFILE文件,我可以在两个系统中使用相同的一个命令:
  
  exp userid=/ tables=t parfile=exp.par
  
  在两种操作系统中,完全相同。这相对于在不同的平台中使用不同的QUERY字符串容易多了。
  
  问:DBMS_RANDOM
  
  您能否告诉我写一个能产生大于0小于1的随机数的随机数产生器的最好方法?
  
  答:Oracle8 8.0版介绍了DBMS_RANDOM包,Oracle8i 8.1.6版介绍了DBMS_RANDOM包的新功能,但Oracle8i 文档中没有详细全面介绍其功能。幸运的是:有一个新的DBMS_RANDOM包函数能够返回0-1之间的随机数。这个新函数是:
  
  FUNCTION value RETURN NUMBER;
  
  FUNCTION value (low IN NUMBER, high IN
  
  NUMBER) RETURN NUMBER;
  
  FUNCTION normal RETURN NUMBER;
  
  FUNCTION string (opt char, len NUMBER)
  
  RETURN VARCHAR2;
  
  VALUE函数的第一种形式返回一个大于或等于0且小于1的随机数;第二种形式返回一个大于或等于LOW,小于HIGH的随机数。下面是其用法的一个示例:
  
  SQL> select dbms_random.value,
  
  dbms_random.value(55,100)
  
  2 from dual;
  
  VALUE DBMS_RANDOM.VALUE(55,100)
  
  --------------- -----------------------------
  
  .782821936 79.6367038
  
  NORMAL函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。事实上,这就是你在清单1中所看到的。
  
  最后,是STRING函数。它返回一个长度达60个字符的随机字符串。参数OPT可以是清单2显示的值中的任何一个单个字符。
  
  关于这些函数及DBMS_RANDOM包的文件都包含在SQLPlus中:
  
  select text
  
  from all_source
  
  where name = 'DBMS_RANDOM'
  
  and type = 'PACKAGE' order by line;

上一篇: 数据库主键设计之思考
下一篇: 关于Oracle中的N层认证具体介绍

1 2 下一页

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net