Announcement

Collapse
No announcement yet.

Wie komm ich an die Spaltennamen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie komm ich an die Spaltennamen

    Hallo,
    ich habe eine Frage und ich hoffe ihr könnt mir dabei helfen. Ich benutzes das unten eingefügt script um eine CSV-Datei aus einem übergeben SQL zu erzeugen. Leider werden nur die Daten aus der CSV-Datei geschrieben. Habt ihr einen Tipp für mich, wie ich als Erste Zeile die Spaltennamen des Cursors ausgeben kann?
    Viele Dank und allen ein schöne Wochenende!

    Code:
    CREATE OR REPLACE FUNCTION  DUMP_CSV
                                (
                                    p_query          IN varchar2,
                                    p_separator      IN varchar2  DEFAULT ',',
                                    p_dir            IN varchar2,
                                    p_filename       IN varchar2,
                                    p_columnheadings IN varchar2  DEFAULT 'N'
                                )
            RETURN number
            AUTHID CURRENT_USER
    --
    --      Lokale Variablen
    --
        IS
                l_output        utl_file.file_type;
                l_theCursor     integer DEFAULT dbms_sql.open_cursor;
                l_columnValue   varchar2(2000);
                l_status        integer;
                l_colCnt        number       DEFAULT 0;
                l_separator     varchar2(10) DEFAULT '';
                l_cnt           number       DEFAULT 0;
                l_columheadings number       DEFAULT 0;
            begin
    --
    --      Deklaration Ausgabedatei
    --
                l_output := utl_file.fopen( 'MYDIR', p_filename, 'w' );
    --
    --      Verbindung des Cursors mit dem SQL-Statement
    --
                dbms_sql.parse(  l_theCursor,  p_query, dbms_sql.native );
    --
    --      Definition der Spalten (max. 255 Stück)
    --
                FOR i IN 1 .. 255 loop
                    begin
                        dbms_sql.define_column( l_theCursor, i, l_columnValue, 2000 );
                        l_colCnt := i;
                    exception
                        when others then
                            IF ( sqlcode = -1007 ) then exit;
                            else
                            raise;
                            end IF;
                    end;
                end loop;
                dbms_sql.define_column( l_theCursor, 1, l_columnValue, 2000 );
                l_status := dbms_sql.execute(l_theCursor);
    --
    --      Abarbeitung des Cursors
    --
                loop
                    exit when ( dbms_sql.fetch_rows(l_theCursor) <= 0 );
                    l_separator := '';
    --
    --          Abarbeitung der Spalten und Ergänzen des Separators
    --
                    FOR i IN 1 .. l_colCnt loop
                        dbms_sql.column_value( l_theCursor, i, l_columnValue );
                        utl_file.put( l_output, l_separator || l_columnValue );
                        l_separator := p_separator;
                    end loop;
                    utl_file.new_line( l_output );
                    l_cnt := l_cnt+1;
                end loop;
    --
    --      Schliessen des Cursors und der Datei
    --
                dbms_sql.close_cursor(l_theCursor);
                utl_file.fclose( l_output );
                RETURN l_cnt;
            end DUMP_CSV;
    /
    exit;
Working...
X