程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 如何在SQL *Plus中把數據庫欄以變量的形式保存

如何在SQL *Plus中把數據庫欄以變量的形式保存

編輯:Oracle數據庫基礎

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參數來捕獲改數值一次,並把它作為輸出的一部分重新顯示出來。

在這個例子中,我們定義了一個稱之為&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

select
table_name c1,
b.extents c2,
b.freelists c3,
num_rows c4,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved