0

我在使用 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;

谁能帮助我为什么两个程序中存在差异

4

1 回答 1

1

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

在您的第一个示例中, v 的值为空。因此没有检索到任何行,并且 v 被赋值为 0。

在您的第二个示例中,如果 v 的值为 5。所以您请求 5 行,但由于只有三行(hihello!、sun、ant),因此将三行放入数组 asq 中,并为 v 分配 3。

于 2014-09-07T13:53:33.440 回答