2014-09-06 38 views
0

我在使用dbms_output軟件包時遇到了問題。當我執行以下代碼它顯示整數爲0dbms_output過程之間的更改?

declare 
v integer; 
asq dbms_output.chararr; 
begin 
dbms_output.put('hi'); 
dbms_output.put_line('hello!'); 
asq(1):='sun'; 
asq(2):='ant'; 
dbms_output.put_line(asq(1)); 
dbms_output.put_line(asq(2)); 
dbms_output.get_lines(asq,v); 
dbms_output.put_line('integer is '||v); 
end; 

但是當我執行下面的代碼我得到整數是3

declare 
v integer:=5; 
asq dbms_output.chararr; 
begin 
dbms_output.put('hi'); 
dbms_output.put_line('hello!'); 
asq(1):='sun'; 
asq(2):='ant'; 
dbms_output.put_line(asq(1)); 
dbms_output.put_line(asq(2)); 
dbms_output.get_lines(asq,v); 
dbms_output.put_line('integer is '||v); 
end; 

任何一個可以幫助我,爲什麼在兩個過程中有變化

回答

1

根據documentation,GET_LINES 過程的第二個參數是IN OUT參數河它告訴過程,從緩衝區中檢索的行數。過程調用後,它保存實際檢索的行數。

在第一個示例中,v的值爲null。因此,沒有行檢索和v被賦值爲0.

在你的第二個例子中,如果v的值是5.所以你要求5行,但因爲只有三行(hihello!,sun,ant ),三行放入數組asq和v被賦值3.

+0

謝謝@Eat桃 – Smart003 2014-09-08 03:45:28