2014-12-03 2 views
0

오라클 SQL은 각 테이블의 이름과 해당 테이블 내의 열을 어떻게 인쇄할까요?하나의 명령문에 테이블과 열을 나열하십시오.

Table1 
    columns 
Table2 
    Columns 
+0

SQL 전용 솔루션이 필요하거나 PL/SQL 블록을 사용할 수 있습니까? – abhi

+0

PL/SQL 블록도 문제가 없습니다. – Princesden

+0

테이블과 컬럼을 포함하여 모든 사용자 객체의 이름과 유형을 포함하는'USER_OBJECTS' 시스템 테이블 (또는 뷰)를보십시오. 나는 그들이 속한 테이블의 이름을 포함해야하는 열에 대해 'USER_COLS'와 같은 별도의 테이블이 있다고 생각합니다. 이러한 테이블을 찾으면 결합 및 정렬의 문제입니다. – GolezTrol

답변

1

이 트릭을 수행해야합니다

형식은 다음과 같이해야한다.

DECLARE 
TNAME user_tables.table_name%TYPE; 
CNAME user_tab_columns.column_name%TYPE; 
CURSOR ct1 
IS SELECT table_name from user_tables; 
CURSOR ct2 IS SELECT column_name FROM user_tab_columns WHERE table_name =TNAME; 
BEGIN 
OPEN ct1; 
LOOP 
FETCH ct1 INTO TNAME; 
EXIT WHEN ct1%NOTFOUND; 
DBMS_OUTPUT.PUT_LINE('TABLENAME:-->'|| TRIM(TNAME)); 
     OPEN ct2; 
     LOOP 
     FETCH ct2 INTO CNAME; 
     EXIT WHEN ct2%NOTFOUND; 
     DBMS_OUTPUT.PUT_LINE('    '|| TRIM(CNAME)); 
     END LOOP; 
     CLOSE CT2; 
END LOOP; 
CLOSE ct1; 
END;  
+0

나쁘지 않습니다. 나는 이것을 SCOTT 스키마의 예와 비교했다. 그것은 약간의 설명을 해치지 않을 것입니다. –

+0

@ 패트릭 - 루프에 들어가는 두 개의 커서가 있습니다. 첫 번째 커서는 모든 테이블 이름을 읽습니다. 두 번째 커서는 테이블 이름 인 매개 변수를 받아들이고 user_tab_columns 뷰를 쿼리합니다. – abhi

관련 문제