In this blog I will post all FAQs, code snippets, real time problems and solutions and any other links which I feel every one needs and can take advantage of.
Oracle SQL to HTML table
Posted 14-10-08 at 01:06 PM by sk_kireeti
This can be a very handy script if you want to convert a SQL query output into a HTML table.
Execute following anonymous pl/sql block in your SQL*Plus editor -
* Sorry for bad formatting
declare
c number;
d number;
col_cnt integer;
f boolean;
rec_tab dbms_sql.desc_tab;
col_num number;
column_value varchar2(32767);
col_index integer;
sql_query varchar2(32767);
begin
sql_query := 'SELECT * FROM all_tables where rownum<2';
c := dbms_sql.open_cursor;
dbms_sql.parse(c, sql_query, dbms_sql.native);
dbms_sql.describe_columns(c, col_cnt, rec_tab);
dbms_output.put_line('<table border=2>');
dbms_output.put_line('<th>');
/*
* Following loop could simply be for j in 1..col_cnt loop.
* Here we are simply illustrating some of the PL/SQL table
* features.
*/
col_num := rec_tab.first;
if (col_num is not null) then
loop
DBMS_SQL.DEFINE_COLUMN (c, col_num, column_value,32767);
dbms_output.put_line('<td>'||rec_tab(col_num).col_name || '</td>');
col_num := rec_tab.next(col_num);
exit when (col_num is null);
end loop;
end if;
dbms_output.put_line('</th>');
d := dbms_sql.execute(c);
LOOP
/* Fetch next row. Exit when done. */
EXIT WHEN DBMS_SQL.FETCH_ROWS(c) = 0;
dbms_output.put_line('<tr>');
for col_index in 1..col_cnt
loop
DBMS_SQL.COLUMN_VALUE (c, col_index, column_value);
dbms_output.put_line('<td>' || trim(nvl(column_value,'-')) || '</td>');
end loop;
dbms_output.put_line('</tr>');
END LOOP;
dbms_output.put_line('</table>');
dbms_sql.close_cursor(c);
end;
/
For your requirements, you can change "sql_query" variable to match your requirements.
Thanks,
Krishna
Execute following anonymous pl/sql block in your SQL*Plus editor -
* Sorry for bad formatting
declare
c number;
d number;
col_cnt integer;
f boolean;
rec_tab dbms_sql.desc_tab;
col_num number;
column_value varchar2(32767);
col_index integer;
sql_query varchar2(32767);
begin
sql_query := 'SELECT * FROM all_tables where rownum<2';
c := dbms_sql.open_cursor;
dbms_sql.parse(c, sql_query, dbms_sql.native);
dbms_sql.describe_columns(c, col_cnt, rec_tab);
dbms_output.put_line('<table border=2>');
dbms_output.put_line('<th>');
/*
* Following loop could simply be for j in 1..col_cnt loop.
* Here we are simply illustrating some of the PL/SQL table
* features.
*/
col_num := rec_tab.first;
if (col_num is not null) then
loop
DBMS_SQL.DEFINE_COLUMN (c, col_num, column_value,32767);
dbms_output.put_line('<td>'||rec_tab(col_num).col_name || '</td>');
col_num := rec_tab.next(col_num);
exit when (col_num is null);
end loop;
end if;
dbms_output.put_line('</th>');
d := dbms_sql.execute(c);
LOOP
/* Fetch next row. Exit when done. */
EXIT WHEN DBMS_SQL.FETCH_ROWS(c) = 0;
dbms_output.put_line('<tr>');
for col_index in 1..col_cnt
loop
DBMS_SQL.COLUMN_VALUE (c, col_index, column_value);
dbms_output.put_line('<td>' || trim(nvl(column_value,'-')) || '</td>');
end loop;
dbms_output.put_line('</tr>');
END LOOP;
dbms_output.put_line('</table>');
dbms_sql.close_cursor(c);
end;
/
For your requirements, you can change "sql_query" variable to match your requirements.
Thanks,
Krishna
Total Comments 0
Comments
Recent Blog Entries by sk_kireeti
- Selecting alternative records in Oracle (14-10-08)
- Oracle SQL to HTML table (14-10-08)
- SQL to select middle record of a table (13-11-07)
- Query to find first and last records of a table (13-11-07)




