programing

제한된 제어로 Oracle View Definition 가져오기

skycolor 2023. 8. 15. 10:58
반응형

제한된 제어로 Oracle View Definition 가져오기

문제는 사용자 지정 SQL 러너가 오라클의 읽기 전용 DB에 연결되어 있다는 것입니다.

저는 뷰의 정의를 얻고 싶습니다.

 select TEXT
 FROM all_VIEWS
 where VIEW_NAME  = '<view_name>';

제한된 텍스트를 반환합니다.최대 100자까지 가능합니다.모든 보기가 이 보기보다 깁니다.

제가 찾은 도움말 파일에는 전체 필드를 캡처하기 전에 'set long 10000'을 추가한 것으로 나와 있습니다.

SQL> set long 10000

SQL> select TEXT
  2  FROM all_VIEWS
  3  where VIEW_NAME  = '<view_name>';

나는 그것을 칠 수 있는 접근 권한이 없습니다.set long 10000다른 창문으로 달려가고 있기 때문입니다.나의 제한된 능력으로 완전한 정의를 얻을 수 있는 다른 방법이 있습니까?

문제는 보기 정의가 들어 있는 LONG 열입니다.

DBMS_METADA를 사용할 수 있습니다.보기 텍스트를 CLOB로 가져오는 TA 패키지

select DBMS_METADATA.GET_DDL ('VIEW','view_name','owner') from dual;

@Marmite의 제안을 사용하여DBMS_METADATA.GET_DDL사용 중인 도구를 사용하여 한 번에 100자만 검색할 수 있다고 가정하면 다음과 같이 전체 보기를 검색할 수 있습니다.

SELECT view_name, LEVEL "Line No", 
DBMS_LOB.SUBSTR(view_clob, 100 ,1 + (LEVEL-1)*100) line_text FROM (
    SELECT view_name, owner, 
    DBMS_METADATA.GET_DDL('VIEW', view_name, owner) view_clob 
    FROM all_views WHERE view_name = '<view_name>'
) CONNECT BY LEVEL <= CEIL(LENGTHB(view_clob)/100) ORDER BY LEVEL;

언급URL : https://stackoverflow.com/questions/31104012/get-oracle-view-definition-with-limited-control

반응형