내가 같은 '% THIS %'값
의 특정 값에 대한 데이터베이스의 모든보기를 검색하려고 검색하기 전에 뷰의 열이 있는지 확인 나는이 PLSQL 함께했다 코드
DECLARE
match_count INTEGER;
BEGIN
FOR t IN (SELECT name FROM user_dependencies where type = 'VIEW') LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM '|| t.name || ' Where Column_Name LIKE ''%THIS%'' '
INTO match_count;
IF match_count > 0 THEN
dbms_output.put_line(t.name ||' '||match_count);
END IF;
END LOOP;
END;
하지만 실행하려고하면 실행 immeadiate 쿼리에서 열 이름에 대해 잘못된 식별자 오류가 발생합니다.
모든보기에 Column_Name이있는 것은 아니지만 모든보기를 반복하면서 쿼리를 실행하기 전에 열이 있는지 확인하는 방법을 알 수 없습니다.
또한 약간 수정 된 버전을 사용하여 모든 테이블을 실행할 수 있었지만 모든 열이있는 것은 아니지만이 문제에 대해서는 실행되지 않았습니다.
편집 : 테이블을 순환하는 데 사용할 수있는 plsql 코드가 포함되어 있습니다.
DECLARE
match_count INTEGER;
BEGIN
FOR t IN (SELECT table_name, column_name FROM all_tab_columns
where table_name LIKE 'THIS%' and data_type = 'VARCHAR2' AND column_name = 'Column_name') LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM '||t.table_name || ' Where Column_name LIKE ''%THIS%'' '
INTO match_count;
IF match_count > 0 THEN
dbms_output.put_line(t.table_name ||' '||t.column_name||' '||match_count);
END IF;
END LOOP;
END;
. 내 문제는 특정 열이 모두 반복되는지 확인하는 방법을 모르겠다는 것입니다. 이 작업을 개별적으로 수행하기에는 너무 많은 뷰가 있으며 if (column_name.exists) {} 기능이 없다는 것을 알고있는 한 멀리 있습니다. 편집시 테이블을 반복 할 때 사용했던 코드가 포함되었습니다. – user1399217
@ user1399217 문제가 어디에 있는지 알 수 없습니다. 'all_tab_columns'는 테이블과 뷰를 반환합니다. – climbage