2

私はOracleデータベースを使用しており、基本的に行う必要があるのは、特定のテーブルの列ごとのNULLフィールドの数をカウントすることです。

そんな感じ:

DECLARE
    BlankCount number(20);
    i number(2) := 1;

BEGIN
    loop that would take each column individualy and exit after the last one
        SELECT COUNT(*) INTO BlankCount FROM name_of_my_table
        DBMS_OUTPUT.PUT_LINE('Column '||i||' has '||BlankCount||' empty cells');
        i := i + 1;
    END LOOP;
END;

ループ部分を実行するものが見つかりませんでした。また、(iを使用して)番号を付ける代わりに、列名を表示できると便利です(ただし、これはそれほど重要ではありません)。

ありがとうございました!

4

2 に答える 2

5

このようなもの:

declare 

  mytable varchar(32) := 'MY_TABLE';

  cursor s1 (mytable varchar2) is 
            select column_name 
            from user_tab_columns
            where table_name = mytable
            and nullable = 'Y';

  mycolumn varchar2(32);
  query_str varchar2(100);    
  mycount number;

begin

  open s1 (mytable);

  loop
     fetch s1 into mycolumn; 
         exit when s1%NOTFOUND;

     query_str := 'select count(*) from ' || mytable || ' where '  || mycolumn || ' is null';

     execute immediate query_str into mycount;

     dbms_output.put_line('Column ' || mycolumn || ' has ' || mycount || ' null values');

  end loop;
end; 
于 2012-07-25T03:37:26.620 に答える
0

このスレッドで説明されているように、カーソルアプローチと動的SQLを使用してみてください: oracle pl/sqlカーソルの列をループする方法

HTH。

于 2012-07-25T03:35:35.350 に答える