數據庫輸出HTML格式報表的測試

發布時間:2017-04-18 06:50 來源:互聯網 當前欄目:網頁設計教程

 當需要在數據庫中開發輸出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;

--頁頭,固定格式

  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、