Oracle數據庫PL/SQL過程調試的輸出方法

1.最基本的DBMS_OUTPUT.PUT_LINE()方法

隨便在什麽地方,只要是BEGIN和END之間,就可以使用DBMS_OUTPUT.PUT_LINE(output);

然而這會有一個問題,就是使用該函數一次最多只可以顯示255個字符,否則緩沖區會溢出。

此外,函數DBMS_OUTPUT.ENABLE(20000)這種函數,僅僅是設置整個過程的全部輸出緩沖區大小,而非DBMS_OUTPUT.PUT_LINE()的緩沖區大小。

對于超過255個字符的變量,使用DBMS_OUTPUT.PUT_LINE()方法是沒有效的。據說在Oracle10中,解除了這個限制,可以輸出任意大小的字符串。

declare

output varchar2(200);

begin

output:=''...''; //賦值

DBMS_OUTPUT.PUT_LINE(output);

end;

如果以上執行結果成功但沒有顯示請執行 set serveroutput on; 然後就可以了;

2.使用表的方法

首先建立一張表,然後在PL/SQL中將要輸出的內容插到表中。然後再從表中查看內容。對于這種方法一次可以輸出幾千個字符。

(1) create table my_output{

id number(4),

txt varchar2(4000)

);

(2) declare

output varchar2(4000);

strSql varchar2(4500);

count number(4):=0;

begin

strSql:=''delete * from my_output'';

EXECUTE IMMEDIATE strSql;

output:=''...''; //賦值

count:=count+1;

strSql:=''Insert into my_output value (count,''''''||output||'''''')'';

--''''在單引號中相當于字符''

EXECUTE IMMEDIATE strSql;

end;

3.使用輸出文件的方法

如果變量非常大,以致連使用表都沒有辦法插入時,只有使用文件方式了。

(1) create or replace directory TMP as ''d:\testtmp'';

--建立一個文件夾路徑

(2) declare

file_handle UTL_FILE.FILE_TYPE;

output varchar2(30000);

begin

output:="....";

file_handle := UTL_FILE.FOPEN(''TMP'', ''output.txt'', ''w'',[1-32767]);

--四個參數:目錄,文件名,打開方式,最大行數(默認爲2000)

UTL_FILE.PUT_LINE(file_handle, output);

UTL_FILE.FCLOSE(file_handle);

exception

WHEN utl_file.invalid_path THEN

raise_application_error(-20000, ''ERROR: Invalid path for file or path not in INIT.ORA.'');

end;

oracle數據庫PL/SQL過程(組圖)
oracle數據庫PL/SQL過程(組圖)
  要想利用PL/SQL程序完成比較完整的數據庫任務,需要進一步學習一些高級設計要素的內容。前面編寫執行的PL/SQL程序,共同的特點是沒有名稱,只能存儲爲文件,然後通過執行文件的方式執行,因此稱爲無名塊。 ...查看完整版>>oracle數據庫PL/SQL過程(組圖)
 
Oracle PL/SQL語言初級教程之過程和函數
  過程和函數   過程和函數都以編譯後的形式存放在數據庫中,函數可以沒有參數也可以有多個參數並有一個返回值。過程有零個或多個參數,沒有返回值。函數和過程都可以通過參數列表接收或返回零個或多個值,函數和...查看完整版>>Oracle PL/SQL語言初級教程之過程和函數
 
Oracle PL/SQL語言初級教程之過程和函數
  過程和函數   過程和函數都以編譯後的形式存放在數據庫中,函數可以沒有參數也可以有多個參數並有一個返回值。過程有零個或多個參數,沒有返回值。函數和過程都可以通過參數列表接收或返回零個或多個值,函數和...查看完整版>>Oracle PL/SQL語言初級教程之過程和函數
 
用一個實例講解Oracle數據庫的PL/SQL語句塊
PL/SQL程序塊以顯示所給出雇員編號的雇員的詳細信息 1 SQL> Declare 2 v_empno emp.empno%Type; /*聲明變量v_empno,%type:使該變量的類型與emp表中的empno類型相同*/ 3 v_emprecord emp%Rowtype;/*聲明變量v_empr...查看完整版>>用一個實例講解Oracle數據庫的PL/SQL語句塊
 
Oracle數據庫編寫PL/SQL代碼經驗談
我從1990年就開始編寫PL/SQL代碼。這意味著我已經編寫了幾萬行的軟件代碼,但我確信,其中的絕大多數代碼都非常拙劣,而且難以維護。 幸運地是,我發現找到並遵循編寫出更好代碼的新方法還爲時不晚。就是在去年,我的...查看完整版>>Oracle數據庫編寫PL/SQL代碼經驗談
 
如何調試oracle, sql server存儲過程
關于存儲過程的調試,知道方法以後很簡單,但在不知道的時候, 爲了測試一個存儲過程的正確性,print,插入臨時表等可謂是使出了渾身解數,煩不勝煩 下面就把我工作中調試存儲過程的方法,簡單的說明一下: ...查看完整版>>如何調試oracle, sql server存儲過程
 
oracle數據庫PL/SQL序列(組圖)
oracle數據庫PL/SQL序列(組圖)
  序列是Oracle 9i提供的用于按照設定的規則自動産生數據的方案對象。在某些數據表的結構中,有些字段需要這種特性。比如,對于某個學生數據表的學號要害字段,用戶可以希望在錄入數據時,能夠自動在上一個記錄的學...查看完整版>>oracle數據庫PL/SQL序列(組圖)
 
Oracle數據庫-PL/SQL整理(1)
--獲取系統記錄行數 go_block('T_WARITEMPRT'); last_record; row_count:=:system.trigger_record; --system.cursor_record--execute_trigger('POST-CHANGE');--設置鼠標狀態 ...查看完整版>>Oracle數據庫-PL/SQL整理(1)
 
Oracle數據庫PL/SQL介紹
什麽是PL/SQL 結構化查詢語言(StrUCtured Query Language,簡稱SQL)是用來訪問關系型數據庫一種通用語言,它屬于第四代語言(4GL),其執行特點是非過程化,即不用指明執行的具體方法和途徑, ...查看完整版>>Oracle數據庫PL/SQL介紹
 
 
回到王朝網路首頁