我要投稿
  • 您当前的位置:57365.com -> 技术教程 -> 网站建设教程 -> 源码精华 -> 教程内容
  • [ 收藏本页教程 ]
  • 检查从未使用过的字段列源码精华教程

    教程作者:佚名    教程来源:不详   教程栏目:源码精华    收藏本页


    有些表创建了几百个列,可是却不是每一列都会用上,一些列自创建以来,就一直处于"休眠"状态,如何找出这些列?今天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;

    (出处:

    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.hxswjs.com All Rights Reserved.57365.com 版权所有