Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在一条语句中列出表和列_Sql_Oracle - Fatal编程技术网

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

在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 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-有两个游标在一个循环中运行。第一个游标读取所有表名。第二个游标接受一个作为表名的参数,并查询用户选项卡列视图。