怎样把一个表的所有字段名都查出来,并用“,”隔开

解决方案 »

  1.   

    1.select column_name from user_tab_columns where table_name = 'your tab name' order by column_name
    然后用ultraeditor或excel等工具进行编辑替换可以得到2.用pl/sql developer或者toad可以导出
      

  2.   

    这个我知道,我想问能不能不用编辑用SQL语句直接生成
      

  3.   

    crm@151>desc teacher;
     Name                                                                                Null?    Type
     ----------------------------------------------------------------------------------- -------- ------
     TNUM                                                                                         NUMBER(38)
     TNAME                                                                                        VARCHAR2(20)
     SEX                                                                                          CHAR(1)
     DEPT                                                                                         VARCHAR2(20)
     TITLE                                                                                        VARCHAR2(20)
     T_ID                                                                                         NUMBERcrm@151>select max(substr(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','), 2)) col from (
      2  select  * from user_tab_columns where table_name='TEACHER')
      3  start with column_id=1
      4  connect by column_id=rownum;COL
    ----------------------------------------------------------------------------------------------------
    TNUM,TNAME,SEX,DEPT,TITLE,T_ID如果是要得到上面的结果的话spool e:\column_name.txt;    --后跟你要保存的文件的路径
    select max(substr(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','), 2)) col from (
    select  * from user_tab_columns where table_name='TEACHER')
    start with column_id=1
    connect by column_id=rownum;
    spool off;
      

  4.   

    请问zzwind5,你语句中的“SYS_CONNECT_BY_PATH”是个函数吧,我运行时提示无效列明,请指教,谢谢
      

  5.   

    SYS_CONNECT_BY_PATHOracle9i以上支持
      

  6.   

    SYS_CONNECT_BY_PATH 仅Oracle9i以上支持
    8i中可以如下操作:SET ECHO OFF
    SET SERVEROUTPUT ON SIZE 10000
    CREATE OR REPLACE PROCEDURE COLS (TABLE_NAME IN VARCHAR2) AUTHID CURRENT_USER
    IS
    theOWNER VARCHAR2(30);
        theTABLE VARCHAR2(30);
    str VARCHAR2(4000):='';
    BEGIN
    IF INSTR(TABLE_NAME,'.')>0 THEN
    theOWNER:=UPPER(SUBSTR(TABLE_NAME,1,INSTR(TABLE_NAME,'.')-1));
    theTABLE:=UPPER(SUBSTR(TABLE_NAME,INSTR(TABLE_NAME,'.')+1));
    ELSE
    theOWNER:=USER;
    theTABLE:=UPPER(TABLE_NAME);
    END IF; FOR CUR IN(
    SELECT COLUMN_NAME FROM ALL_TAB_COLS WHERE OWNER=theOWNER AND TABLE_NAME=theTABLE ORDER BY COLUMN_ID
    )LOOP
    str:= str || CUR.COLUMN_NAME || ',';
    END LOOP; IF str IS NOT NULL THEN
    str:=SUBSTR(str,1,LENGTH(str)-1);
    DBMS_OUTPUT.PUT_LINE(str);
    END IF;
    END COLS;
    /--测试结果SQL> EXECUTE COLS('A');
    ID,TTPL/SQL 过程已成功完成。