您现在的位置是:首页
>
SQL数据库 如何在SQL *Plus中把数据库栏以变量的形式保存
如何在SQL *Plu 中把数据库栏以变量的形式保存 Oracle SQL *Plu 有一个非常有用的子参数( u arameter) 它从属于一个叫着NEW_VALUE的数据栏参数 NEW_VA
如何在SQL *Plus中把数据库栏以变量的形式保存

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 hh :mi ) today from dual; 现在 我们理解了SQL *Plus变量是如何保存的了 让我们看看一个真实的例子 下面的例子来自STATSPACK报告 改报告描述了表格增长与数据库块大小的函数关系 由于DB_BLOCK_SIZE在整个数据库中是一个常量 我们使用NEW_VALUE参数来捕获改数值一次 并把它作为输出的一部分重新显示出来 在这个例子中 我们定义了一个称之为&blksz的变量并在主查询中用它来判断表格中的剩余空间 下面的例子向我们演示了如何进行这个计算 知道块大小可以让我们很快估计出表格中的剩余空间容量 (num_rows*avg_row_len) * (blocks*&blksz) 这是整个查询 column c heading TABLE NAME format a ; column c heading EXTS format ; column c heading FL format ; column c heading # OF ROWS format ; column c heading #_rows*row_len format ; column c heading SPACE ALLOCATED format ; column c heading PCT USED format ; column db_block_sizenew_valueblksznoprint select value db_block_size from v$parameter where name = db_block_size ; set pages ; set lines ; spool tab_rpt lst select table_name c b extents c b freelists c num_rows c num_rows*avg_row_len c blocks*&blksz c ((num_rows*avg_row_len)/(blocks*&blksz))* c 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 > order by c desc ; lishixinzhi/Article/program/Oracle/201311/17435
很赞哦! (1042)