代码之家  ›  专栏  ›  技术社区  ›  Rashack

查看Oracle表中的所有列

  •  0
  • Rashack  · 技术社区  · 16 年前

    以下是我目前所掌握的:

    DECLARE
       cursor tableNames is
          select table_name
          from user_tables
          where table_name not like '%_A';
        lSql varchar2(3000);
        type t_columnRow is ref cursor;
    
        v_columns t_columnRow;
    begin
    
    FOR tableName in tableNames
    LOOP
        open v_columns for select COLUMN_NAME from user_tab_columns where table_name = tableName;
    
        for columnRow in v_columns LOOP
            DBMS_OUTPUT.PUT_LINE(tableName || '.' || columnRow.COLUMN_NAME);
            -- Here I would just concatenate the strings ....
        END LOOP;
    
    END LOOP;    
    
    End;
    

    为此,我得到了以下错误:

    Error at line 1
    ORA-06550: line 14, column 84:
    PLS-00382: expression is of wrong type
    ORA-06550: line 16, column 22:
    PLS-00221: 'V_COLUMNS' is not a procedure or is undefined
    ORA-06550: line 16, column 5:
    PL/SQL: Statement ignored
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Christian13467    16 年前

    试试这个:

    BEGIN
        FOR t IN (SELECT table_name FROM user_tables WHERE table_name not like '%_A')
        LOOP
            FOR c IN (SELECT column_name FROM user_tab_columns WHERE table_name = t.table_name)
            LOOP
                DBMS_OUTPUT.PUT_LINE(t.table_name||'.'||c.column_name);
                -- Here I would just concatenate the strings ....
            END LOOP;
        END LOOP;
    END;
    
        2
  •  1
  •   Adam Paynter    16 年前

    你也许可以逃脱这样简单的惩罚:

    DECLARE
       cursor tableNames is
          select table_name
          from user_tables
          where table_name not like '%_A';
        lSql varchar2(3000);
    begin
    
    FOR tableName in tableNames
    LOOP   
        for columnRow in (select COLUMN_NAME from user_tab_columns where table_name = tableName) LOOP
            DBMS_OUTPUT.PUT_LINE(tableName || '.' || columnRow.COLUMN_NAME);
            -- Here I would just concatenate the strings ....
        END LOOP;
    
    END LOOP;    
    
    End;