在dbms_output过程之间进行更改?

时间:2014-09-06 10:07:25

标签: oracle oracle11g dbms-output

我在使用dbms_output包时出现问题。当我执行以下代码时,它显示整数为0

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 个答案:

答案 0 :(得分:1)

根据documentation,GET_LINES的第二个参数 过程是IN OUT参数。它告诉程序,从缓冲区中检索的行数。在程序调用之后,它保存实际检索的行数。

在第一个示例中,v的值为null。因此,不会检索任何行,并为v赋值0.

在你的第二个例子中,如果v为5,那么你要求5行,但由于只有三行(hihello!,sun,ant),所以将三行放入数组asq,v赋值为3