source

Oracle에서 SQL을 통해 테이블 주석을 얻는 방법은 무엇입니까?

manycodes 2023. 7. 10. 22:30
반응형

Oracle에서 SQL을 통해 테이블 주석을 얻는 방법은 무엇입니까?

해봤어요.

select * from user_tab_comments;

세 개의 열 "TABLE_NAME", "TABLE_TYPE" 및 "COMMATION"을 반환하지만 "TABLE_NAME" 열은 "암호화됨"과 같으므로 명확한 테이블 이름이 필요합니다.

TABLE_NAME                      TABLE_TYPE  COMMENTS

BIN$IN1vjtqhTEKcWfn9PshHYg==$0  TABLE       Résultat d'intégration d'une photo numérisée
BIN$PUwG3lb3QoazOc4QaC1sjw==$0  TABLE       Motif de fin d'agrément de maître de stage

사용할 때select * from user_tables;TABLE_NAME이 "암호화"되지 않았습니다.

10g Oracle은 DROP TABLE 문을 발행할 때 테이블을 즉시 드롭하지 않기 때문입니다.대신 이름을 이렇게 다시 짓습니다.BIN$IN1vjtqhTEKcWfn9PshHYg==$0그리고 그것들을 휴지통에 넣습니다.이렇게 하면 떨어뜨릴 의도가 없었던 테이블을 복구할 수 있습니다.자세히 알아보세요.

휴지통의 테이블은 여전히 테이블이므로 ALL_TABLES 및 유사한 보기에 표시됩니다.따라서 실시간(삭제되지 않은) 테이블에만 관련된 주석을 표시하려면 테이블 이름으로 필터링해야 합니다.

select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/

"플래그 컬럼이 없어서 당신이 할 수 있었다는 것이 믿기지 않습니다. 그리고 is_flag = 0인가 뭔가입니다."

네 말이 맞아요, 정말 대단할 것 같아요.문서를 확인한 결과 Oracle 10g은 USER_/ALL_/ALL_DABLES_TABLES 보기에 DROPD라는 열을 추가했습니다.

select tc.* 
from all_tab_comments tc
     join all_tables t
     on tc.owner = t.owner
     and tc.table_name = t.table_name
where t.dropped = 'NO'
/

설명서를 확인하십시오.분명히 ALL_TABLES 보기에 참여하려면 이름을 필터링하는 것보다 더 많은 입력이 필요하므로 필요에 따라 원래 WHERE 절을 유지하는 것이 더 쉬울 수 있습니다.

USER_TAB_COMments에서 t.table_name,t.dll을 선택합니다. 여기서 TABLE_NAME = 'SS_DEPT';

언급URL : https://stackoverflow.com/questions/16567129/how-to-get-table-comments-via-sql-in-oracle

반응형