2012-08-07 49 views
2
CREATE OR replace PROCEDURE Hello_world2 
IS 
BEGIN 
    HTP.htmlopen; 
    HTP.headopen; 
    HTP.Title ('You knew it was coming...'); 
    HTP.headclose; 
    HTP.comment ('This phrase is in every computer book.'); 
    HTP.Bodyopen (cattributes => 'body bgcolor=blue'); 
    HTP.Print ('And here it is .... Hello, World!'); 
    HTP.bodyclose; 
    HTP.htmlclose; 
END; 

如何將此輸出到HTML文件?我曾嘗試如下圖所示:從PL/SQL生成HTML

spool report.htm 
exec hello_world2; 
spool off 
exit 

但是,如下圖所示,我收到錯誤:

ORA-06502: PL/SQL: numeric or value error 
    ORA-06512: at "SYS.OWA_UTIL", line 356 
    ORA-06512: at "SYS.HTP", line 1368 
    ORA-06512: at "SYS.HTP", line 1443 
    ORA-06512: at "SYS.HTP", line 1735 
    ORA-06512: at "SYS.HTP", line 72 
    ORA-06512: at "T416493.HELLO_WORLD2", line 4 
    ORA-06512: at line 1 

誰能幫我這個

+0

在第一次執行時獲取錯誤,而不是後續錯誤。不知道爲什麼。從PL/SQL生成一個HTML頁面,但是... – Sathya 2012-08-07 08:57:17

+0

@Sathya:我能夠創建過程,但不能夠創建HTML,有沒有其他方法來從PL SQL生成HTML? – 2012-08-07 09:04:12

+1

冒着聽起來無益的風險,爲什麼?在oracle程序中生成html使我所有的代碼 - 氣味感覺都刺痛。當然,有一個更好的地方把你的html – InSane 2012-08-07 09:11:12

回答

4

通常你會打電話owa_util.showpage到了後臺內容。 Dan對用法有一個很好的概述Oracle OWA_UTIL 有一些有趣的事情,它應該從sqlplus運行,但我認爲它期望使用web瀏覽器從mod_plsql調用。

如果你真的只想te生成靜態網頁,你也可以使用普通的舊dbms_output來做到這一點。否則,它可能是聰明,能看看Oracle Apex或者甚至a very nice and capable alternative for Oracle Apex, Formspider

+0

:多大的dbms_output工作,我已經創建了一個簡單的開始結束塊,裏面,我已經把varyus dbms_output語句,但是當我假裝該塊,我得到一個輸出'PL/SQL過程已成功完成。' – 2012-08-07 09:10:11

+1

發出命令:SET SERVEROUTPUT ON – Ollie 2012-08-07 09:12:00

+0

@Ollie:感謝Ollie它的工作原理,但爲什麼我得到這個錯誤可以幫助,我試圖避免在我的代碼中對代碼進行硬編碼。 – 2012-08-07 09:15:33

1

ORA-06512:在「SYS.OWA_UTIL」,線356

你試試,看看那裏有什麼? :-) 該行有 for i in 1..owa.num_cgi_vars 所以你試圖在非cgi環境下運行cgi-aware代碼。 owa.num_cgi_vars變量爲NULL。

begin for i in 1..null loop null; end loop; 結束;

會給你相同的ORA-06512。

0

我有同樣的問題。 我插入另一個爸爸配置文件,它的工作就像一個魅力:) 不知怎的,老爸的個人資料爛了。

- as xdbadmin or sys(mpl_user當然是程序包所在的模式): exec dbms_epg.create_dad('new_dad','/ my_db/*'); exec dbms_epg.set_dad_attribute('new_dad','database-username','UUSSEERR'); - 大寫的用戶名 將dbms_epg的執行授予uusseerr; (用戶): exec dbms_epg.authorize_dad('new_dad');