Sql 在一条语句中列出表和列
在oracle SQL中,如何打印每个表的名称以及该表中的列—在该表中的每列后面的单独一行上打印一次表名 格式应如下所示:Sql 在一条语句中列出表和列,sql,oracle,Sql,Oracle,在oracle SQL中,如何打印每个表的名称以及该表中的列—在该表中的每列后面的单独一行上打印一次表名 格式应如下所示: Table1 columns Table2 Columns 这应该能奏效 DECLARE TNAME user_tables.table_name%TYPE; CNAME user_tab_columns.column_name%TYPE; CURSOR ct1 IS SELECT table_name from user_tables; CURSOR
Table1
columns
Table2
Columns
这应该能奏效
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;
您想要纯SQL解决方案还是PL/SQL块对您有效?PL/SQL块也可以。请查看
USER\u OBJECTS
system表(或视图),其中包含所有用户对象的名称和类型,包括表和列。我认为对于列有单独的表,如USER\u COLS
,其中应该包含它们所属的表的名称。一旦找到这些表,就需要进行连接和排序。如果使用SQL*加上一个简单的description
就可以了。不错。我针对示例SCOTT模式运行了这个。有一些解释也无妨。@Patrick-有两个游标在一个循环中运行。第一个游标读取所有表名。第二个游标接受一个作为表名的参数,并查询用户选项卡列视图。