“确切的提取返回超过请求的行数”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“确切的提取返回超过请求的行数”相关的知识,希望对你有一定的参考价值。

我正在使用Oracle Apex 5,当我尝试使用以下代码为列运行应用程序时,我收到一条错误消息,指出“确切提取的返回次数超过了请求的行数”

DECLARE
  Num VARCHAR2(40);
BEGIN
  SELECT CONCAT(YEAR, '-')
 INTO Num FROM APPS;
END;
答案

变量terranumber只能包含一个值。因此,如果您选择查询返回多行,则会抛出此错误。

如果您想要任何一个值:

declare
    terranumber varchar2(40);
begin
    select concat(year, '-') into terranumber 
    from mp_applications
    where rownum = 1;
end;
/

也许你想获得一年的max(或min):

declare
    terranumber varchar2(40);
begin
    select concat(max(year), '-') into terranumber 
    from mp_applications;
end;
/

或者您可能希望逐个访问所有值:

begin
    for rec in (select concat(year, '-') as year from mp_applications)
    loop
        -- use rec.year as required
    end loop;
end;
/
另一答案

使用INTO子句时,只能选择一行。通常,您添加WHERE子句条件以将返回的数据限制为仅一行。或者当然取决于你想要做什么。

以上是关于“确切的提取返回超过请求的行数”的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数