テーブル内に値を持たないが機能していない列の合計数を検索するためにこのクエリを作成しました。テーブル内の値がないすべての列を検索するクエリ
SET serveroutput ON;
DECLARE
v_count NUMBER;
v_table_name VARCHAR2(200);
CURSOR c2
IS
SELECT Column_name FROM all_tab_columns WHERE table_name= A;
BEGIN
FOR r1 IN c2
LOOP
dbms_output.put_line(r1.column_name);
EXECUTE immediate('SELECT COUNT(r1.column_name) INTO v_count FROM HR'||'.'||A);
IF v_count =0 THEN
dbms_output.put_line(v_count);
END IF;
END LOOP;
END;
EXECUTE IMMEDIATEは、 'INTO v_count'をコンパイルしません。代わりに、次のようにします。 '即時実行( 'SELECT COUNT(r1.column_name)FROM HR' || '。' || 'A')INTO v_count;'。これを最初に実行してから、値を出力してから、さらに検討します。 – g00dy
r1.column_nameエラーをスローする無効な識別子 –
'EXECUTE immediate 'SELECT COUNT(' || r1.column_name || ')FROM HR' || '。' | '' A 'INTO v_count;'このコマンドは文字列として取得するため、r1.column_nameを評価できません。 – g00dy