Pl/SQL- Get column names from a query

后端 未结 2 2032
再見小時候
再見小時候 2021-02-06 11:12

I\'m using Pl/SQL with Oracle Database 11g.

I\'m writing a function that takes in a select statement as a parameter (varchar2). The function uses a for loop to go over

2条回答
  •  故里飘歌
    2021-02-06 11:36

    I believe you can use DESCRIBE_COLUMNS to do this. Just pass in the cursor and the other required parameters.

    http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sql.htm#i1026120

    declare
        v_sql varchar2(32767) := 'select 1 column1, 2 column2 from dual';
        v_cursor_id integer;
        v_col_cnt integer;
        v_columns dbms_sql.desc_tab;
    begin
        v_cursor_id := dbms_sql.open_cursor;
        dbms_sql.parse(v_cursor_id, v_sql, dbms_sql.native);
        dbms_sql.describe_columns(v_cursor_id, v_col_cnt, v_columns);
    
        for i in 1 .. v_columns.count loop
            dbms_output.put_line(v_columns(i).col_name);
        end loop;
    
        dbms_sql.close_cursor(v_cursor_id);
    exception when others then
        dbms_sql.close_cursor(v_cursor_id);
        raise;
    end;
    /
    
    Output:
    COLUMN1
    COLUMN2
    

提交回复
热议问题