當需要在數據庫中開發輸出HTML報表的時候, 我們可以在過程中直接使用htp包來實現html代碼和對數據處理后的輸出. 并輸出為需要的格式(HTML標記語言來控制) . 以下提供一個直接從數據庫生成HTML報表的測試例子, 需要根據自己的需要來進行修改或增加.
在使用前需要配置apache的連接, 這樣在調用過程的時候, 系統直接將生成的html輸出到WEB;
--配置apache連接:
如安裝在D:systemhttps下,D:systemhttpsApachemodplsqlconfdads.conf文件. 設置為:
<Location /ss>
SetHandler pls_handler
Order deny,allow
Allow from all
AllowOverride None
PlsqlDatabaseUsername dinya
PlsqlDatabasePassword dinya
PlsqlDatabaseConnectString dinya:1521:ora10g
PlsqlAuthenticationMode Basic
</Location>
當然對數據庫的連接必須有效, 具體請見相關的設置文檔. 重起Apache服務.
--創建測試包:
create or replace package cux_html_report as
function t(p_size in number, p_content in varchar2) return varchar2 ;
type c_sql is ref cursor;
procedure main;
procedure html_header(p_title in varchar2);
procedure html_body(p_sql in varchar2,p_column_count in number,p_subtitle
in varchar2,p_align in varchar2,p_black in varchar2);
procedure html_tail;
procedure table_h(p_width in number,p_border in number,p_align in varchar2);
procedure table_t;
procedure tr_(p_col_count in number,p_column in varchar2,p_align in varchar2,
p_black in varchar2);
procedure tr_h;
procedure tr_t;
procedure td_(p_col_count in number,p_content in varchar2,p_align in varchar2,
p_black in varchar2);
procedure report_header(p_title in varchar2);
procedure report_subtitle(p_col_count in number,p_content in varchar2,p_align
in varchar2,p_black in varchar2);
procedure report_tail(p_content in varchar2);
end ;
/
create or replace package body cux_html_report as
function t(p_size in number, p_content in varchar2) return varchar2 as
i number:=0;
v_out varchar2(300):='';
p_cont varchar2(1000):=p_content;
begin
for ii in 1..p_size loop
select substr(p_cont,0,decode(instr(p_cont,';'),0,length(p_cont),instr(p_cont,';')-1))
into v_out from dual ;
p_cont:=substr(p_cont,instr(p_cont,';')+1);
i:=i+1;
if i=p_size then
return v_out;
end if;
end loop;
end ;
/*******************************************************************************
主程序
需要處理分頁的問題
********************************************************************************/
procedure main as
begin
html_header('我的測試報表');
report_header('我的標題');
html_body('select t.owner||'';''||t.object_name||'';''||t.object_id||'';''|
|t.object_type||'';''||t.owner
from all_objects t
where t.owner=''DINYA''
and rownum<=100',5,'序號;對象名稱;ID;類型','center','<b></b>');
report_tail('這里是報表尾');
html_tail;
end;
--頁頭,固定格式
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答