資料庫版本:oracle11g 11.0.2.0.4 SQL> desc x$ksppi; Name Null? Type ADDR RAW(8) >記憶體地址 INDX NUMBER >序號 INST_ID NUMBER >instance number KSPPINM VARCHAR2(80) > ...
資料庫版本:oracle11g 11.0.2.0.4
SQL> desc x$ksppi;
Name Null? Type
-------------------- -------- ----------------------------
ADDR RAW(8) ---->記憶體地址
INDX NUMBER ---->序號
INST_ID NUMBER ---->instance number
KSPPINM VARCHAR2(80) ---->參數名稱
KSPPITY NUMBER ---->參數類型
KSPPDESC VARCHAR2(255) ---->參數描述
KSPPIFLG NUMBER ---->標誌欄位
KSPPILRMFLG NUMBER
KSPPIHASH NUMBER
SQL> desc x$ksppcv;
Name Null? Type
-------------------- -------- ----------------------------
ADDR RAW(8) ---->記憶體地址
INDX NUMBER ---->序號
INST_ID NUMBER ----->instance number
KSPPSTVL VARCHAR2(4000) ---->value,參數值
KSPPSTDVL VARCHAR2(4000)
KSPPSTDF VARCHAR2(9) ---->預設值
KSPPSTVF NUMBER ---->標誌欄位
KSPPSTCMNT VARCHAR2(255) ---->comment
查看隱含參數及值
select pi.indx+1 numb, pi.ksppinm name, sv.ksppstvl value, pi.ksppity type, sv.ksppstdf is_default, decode(bitand(pi.ksppiflg/256,1), 1,'True', 'False' ) is_session_modifiable, decode(bitand(pi.ksppiflg/65536,3), 1,'Immediate', 2,'Deferred' , 3,'Immediate', 'False' ) is_system_modifiable, decode(bitand(sv.ksppstvf,7), 1,'Modified', 4,'System Modified', 'False' ) is_modified, decode(bitand(sv.ksppstvf,2), 2,'True', 'False' ) is_adjusted, pi.ksppdesc description from x$ksppi pi, x$ksppsv sv where pi.indx = sv.indx ;
查詢結果如下:
由於GV$PARAMETER也是查詢參數的,但是他們有什麼不同呢。
SELECT view_definition FROM v$fixed_view_definition WHERE view_name = 'GV$PARAMETER'; ------>通過數據字典查看生成GV$PARAMETER視圖的SQL語句
1 /* Formatted on 2019/1/10 上午 10:00:25 (QP5 v5.326) */ 2 SELECT x.inst_id, 3 x.indx + 1, 4 ksppinm, 5 ksppity, 6 ksppstvl, 7 ksppstdvl, 8 ksppstdf, 9 DECODE (BITAND (ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'), 10 DECODE (BITAND (ksppiflg / 65536, 3), 11 1, 'IMMEDIATE', 12 2, 'DEFERRED', 13 3, 'IMMEDIATE', 14 'FALSE'), 15 DECODE (BITAND (ksppiflg, 4), 16 4, 'FALSE', 17 DECODE (BITAND (ksppiflg / 65536, 3), 0, 'FALSE', 'TRUE')), 18 DECODE (BITAND (ksppstvf, 7), 19 1, 'MODIFIED', 20 4, 'SYSTEM_MOD', 21 'FALSE'), 22 DECODE (BITAND (ksppstvf, 2), 2, 'TRUE', 'FALSE'), 23 DECODE (BITAND (ksppilrmflg / 64, 1), 1, 'TRUE', 'FALSE'), 24 DECODE (BITAND (ksppilrmflg / 268435456, 1), 1, 'TRUE', 'FALSE'), 25 ksppdesc, 26 ksppstcmnt, 27 ksppihash 28 FROM x$ksppi x, x$ksppcv y 29 WHERE (x.indx = y.indx) 30 AND BITAND (ksppiflg, 268435456) = 0 31 AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '##%') ---->篩選,將以下劃線'__'開頭的替換成'##'開頭,然後排除 32 AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '#%') ---->篩選,將以下劃線'_'開頭的替換成'#'開頭,然後排除(有點困惑,為什麼不直接not like '_%' 排除) 33 OR (ksppstdf = 'FALSE') 34 OR (BITAND (ksppstvf, 5) > 0)))
decode函數比較1個參數時
SELECT ID,DECODE(inParam,'beComparedParam','值1' ,'值2') name FROM table
如果第一個參數inParam=='beComparedParam',則select得到的name顯示為值1,
如果第一個參數inParam!='beComparedParam',則select得到的name顯示為值2
decode函數比較多個參數時
SELECT ID,DECODE(inParam,'para1','值1' ,'para2','值2','para3','值3','para4','值4','para5','值5','default') name FROM table
如果第一個參數inParam=='para1'那麼那麼select得到的那麼顯示為值1;
如果第一個參數inParam=='para2'那麼那麼select得到的那麼顯示為值2;
如果第一個參數inParam=='para3'那麼那麼select得到的那麼顯示為值3;
如果第一個參數inParam=='para4'那麼那麼select得到的那麼顯示為值4;
如果第一個參數inParam=='para5'那麼那麼select得到的那麼顯示為值5;
都不相等就為'default '
BITAND( nExpression1 ,nExpression2 )
將 nExpression1 的每一位同 nExpression2 的相應位進行比較。如果 nExpression1 和 nExpression2 的位都是 1,相應的結果位就是 1;否則相應的結果位是 0 ------->1and1 = 1 , 1and0 = 0 , 0and0 = 0
TRANSLATE(string,from_str,to_str)
返回將(所有出現的)from_str中的每個字元替換為to_str中的相應字元以後的string。TRANSLATE 是 REPLACE 所提供的功能的一個超集。如果 from_str 比 to_str 長,那麼在 from_str 中而不在 to_str 中的額外字元將從 string 中被刪除,
因為它們沒有相應的替換字元。to_str 不能為空。Oracle 將空字元串解釋為 NULL,並且如果TRANSLATE 中的任何參數為NULL,那麼結果也是 NULL。