网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > PL/SQL > 如何在SQL *Plus中把数据库栏以变量的形式保存  

如何在SQL *Plus中把数据库栏以变量的形式保存

2003-07-17  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  Oracle SQL *Plus有一个非常有用的子参数(subparameter),它从属于一个叫着NEW_VALUE的数据栏参数。NEW_VALUE指示允许你以SQL *Plus脚本中的变量保存从Oracle表格查询而得到的数据。
  
  用过使用NEW_VALUE参数,你可以像真正的编程语言那样使用SQL *Plus脚本来保存和寻址程序变量,如同PL/SQL那样。
  
  
  保存SQL *Plus变量并在其中填充Oracle数据是非常重要的特性,由于它减少了对数据库访问,所以它提高了SQL *Plus脚本的有效性。
  
  collog_mode_valnew_valuelog_modenoprint
  
  select
   value log_mode
  from
   v$parameter
  where
   name = 'archive_log_mode';
  
  select
   'The current archivelog mode is '||'&&log_mode' from dual;
  
  column today new_value today;
  
  select
   to_char(sysdate,'mm/dd/yyyy hh24:mi') today
  from
   dual;
  
  现在,我们理解了SQL *Plus变量是如何保存的了,让我们看看一个真实的例子。下面的例子来自STATSPACK报告,改报告描述了表格增长与数据库块大小的函数关系。由于DB_BLOCK_SIZE在整个数据库中是一个常量,我们使用NEW_VALUE参数来捕获改数值一次,并把它作为输出的一部分重新显示出来。
网管网www_bitscn_com

  
  在这个例子中,我们定义了一个称之为&blksz的变量并在主查询中用它来判断表格中的剩余空间。下面的例子向我们演示了如何进行这个计算。知道块大小可以让我们很快估计出表格中的剩余空间容量。
  
   (num_rows*avg_row_len)
   --------------------- * 100
   (blocks*&blksz)
  
  这是整个查询:
  
  column c1 heading \"TABLE NAME\" format a15;
  column c2 heading \"EXTS\" format 999;
  column c3 heading \"FL\" format 99;
  column c4 heading \"# OF ROWS\" format 99,999,999;
  column c5 heading \"#_rows*row_len\" format 9,999,999,999;
  column c6 heading \"SPACE ALLOCATED\" format 9,999,999,999;
  column c7 heading \"PCT USED\" format 999;
  
  column db_block_sizenew_valueblksznoprint
  
  select value db_block_size from v$parameter where name = 'db_block_size';
  
  set pages 999;
  set lines 80;
  
  spool tab_rpt.lst

网管下载dl.bitscn.com


  
  select
   table_name c1,
   b.extents c2,
   b.freelists c3,
   num_rows c4,
   num_rows*avg_row_len c5,
   blocks*&blksz c6,
   ((num_rows*avg_row_len)/(blocks*&blksz))*100 c7
  from
   perfstat.stats$tab_stats a,
   dba_segments b
  where
   b.segment_name = a.table_name
  and
   to_char(snap_time,'yyyy-mm-dd') =
   (select max(to_char(snap_time,'yyyy-mm-dd')) from perfstat.stats$tab_stats)
  and
   avg_row_len > 500
  order by c5 desc
  ;
  
  
  
  
TAGs形式   保存   变量   数据库   如何   Plus   SQL   NEW_VALUE    
 上一篇:使用查询分析器调整SQL服务器脚本   下一篇:PL/SQL初学者必读:几十个实用的PL/SQL
相关文章列表
如何在SQL *Plus中把数据库栏以变量的形式保存 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.PL/SQL - 嵌套游标 cursor-PLSQL
2.用一个实例讲解Oracle数据库的PL/SQL语句
3.PL/SQL----触发器-PLSQL
4.mysql存储过程写法—动态参数运用-PLSQL
5.PL/SQL Developer导出分区索引脚本-PLSQL
6.PL/SQL collection— table() 函数-PLSQL
7.SQL Server 2005 中的架构与用户-PLSQL
8.Oracle数据库维护常用SQL语句集合(2)-P
9.Oracle数据库维护常用SQL语句集合(3)-P
10.再议SQL Server临时表和表变量-PLSQL
最新推荐文章:
1.与数据库无关的处理放到数据库以外来实现
2.Oracle 10g第2版新特性之SQL和PL/SQL
3.通过PL/SQL访问Web Services
4.菜鸟学oracle - 用PL/SQL画直方图
5.重新编译PLSQL中无效对象或指定对象
6.Oracle高级技巧
7.深入了解Oracle 10g新的多重集运算符
8.在SQL中删除重复记录(多种方法)
9.Oracle:PL/SQL中怎样使用Array
10.数据库手册:速查Oracle函数列表
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■