我在使用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;
任何人都可以帮助我为什么两个程序中存在变异
答案 0 :(得分:1)
根据documentation,GET_LINES的第二个参数 过程是IN OUT参数。它告诉程序,从缓冲区中检索的行数。在程序调用之后,它保存实际检索的行数。
在第一个示例中,v的值为null。因此,不会检索任何行,并为v赋值0.
在你的第二个例子中,如果v为5,那么你要求5行,但由于只有三行(hihello!,sun,ant),所以将三行放入数组asq,v赋值为3