Oracle裏面,視圖SYS.USER_TAB_COLS和SYS.USER_TAB_COLUMNS都保存了當前用戶的表、視圖和Clusters中的列信息。通過檢索這兩個表,可以方便的獲取到表的結構。
利用下面這條SQL語句可以獲得當前用戶的表結構:
select * from user_tab_columns
2.妙用
可以利用Oracle的這個特性,做數據庫的升級維護工作。
比如我們要重構一張表,增加xx字段。普通的DDL語句一般都這麼寫沒問題:
alter table A add (xx varchar2(255))
然後如果我們做的好一點,還要求這個升級腳本是可以重複執行的。那怎麼辦呢?
可以寫一個pl sql,邏輯是先到user_tab_columns去查詢這張表是否有xx字段,如果沒有,就execute immediate上面這句DDL語句。否則如果已經存在就不做事了。