检查从未使用过的字段列源码精华教程
|
| 论文作者:佚名 论文来源:不详 论文发布时间:2006-6-20 2:40:43 论文发布人:chjchjchj |
减小字体
增大字体
有些表创建了几百个列,可是却不是每一列都会用上,一些列自创建以来,就一直处于"休眠"状态,如何找出这些列?今天CNOUG上有人问这个问题,中午手痒,就写个PL块检查. 每个列名可从视图COL中SELECT,可以取出每一列名,然后构造动态的SQL语句去检查是否为空.(10GR2下测试通过). 以下PLSQL块执行结果将列出了所有行的值全为NULL的列名,也就是表建立后就根本没使用过的列,这种列就可以清理掉.
DECLARE v_tname VARCHAR2 (255); -- 表名 v_cname VARCHAR2 (255); -- 字段名 v_sql VARCHAR2 (255); -- 临时动态SQL语句 v_rowcount1 NUMBER; -- 总记录数 v_rowcount2 NUMBER; -- NULL值记录数 CURSOR cur_null_col (p_tname VARCHAR2) --取出每一列名 IS SELECT cname FROM col WHERE tname = p_tname AND NULLS = 'NULL'; BEGIN v_tname := 'TABLENAME'; --表名一定得大写 v_sql := 'SELECT count(1) FROM ' v_tname; EXECUTE IMMEDIATE v_sql INTO v_rowcount1; OPEN cur_null_col (v_tname); LOOP FETCH cur_null_col INTO v_cname; EXIT WHEN cur_null_col%NOTFOUND; v_sql := 'SELECT count(1) FROM ' v_tname ' WHERE ' v_cname ' IS NULL'; EXECUTE IMMEDIATE v_sql INTO v_rowcount2; IF v_rowcount1 = v_rowcount2 THEN DBMS_OUTPUT.put_line (v_cname); END IF; END LOOP; CLOSE cur_null_col; END;
(出处:
|
|
|
|
|
|
|
| ∷相关技术评论 |
(评论内容只代表网友观点,与本站立场无关!) [查看发表评论...] | |
|
|
| |
站内广告 |
| |
|
站内搜索 |
| |
栏目导航 |
| |
|
|
相关技术 |
 |
|
本月热门 |
| |
|
|
本日热门 |
| |
|
|
|