Oracle精确获取返回的行数超过了请求的行数

时间:2018-06-26 08:08:35

标签: oracle plsql

当我在oracle表上运行普通的sql查询时:

select name from table;

我得到了想要的结果。

但是当我以pl / sql运行它时,我不断收到错误ORA-01422: exact fetch returns more than requested number of rows

declare
l_name VARCHAR(200);

begin
select name into l_name from table;
end;

我知道该错误告诉我我正在尝试向l_name中插入更多行,但是由于搜索将几乎总是返回更多内容,因此如何使l_name动态超过1个结果。

使用pl / sql的原因是因为我需要基于Oracle Apex上的http搜索来显示项目列表,而普通的sql代码无法执行此操作。

htp.p('Names found: '||TO_CHAR(l_name));

1 个答案:

答案 0 :(得分:0)

您可以使用for循环。这是一个(非常粗糙的)示例,它允许您遍历所有匹配的行,并使用分号终止符打印每个名称。

htp.prn('Names found: ');    
for my_data in (select name from table) loop
    htp.prn(to_char(my_data.name) || '; ');
end loop;
htp.p(''); -- newline