Sql &引用;精确提取返回的行数超过请求的行数”;
我正在使用OracleApex 5,当我尝试使用以下列代码运行该应用程序时,我收到一个错误消息:“精确获取返回的行数超过请求的行数”Sql &引用;精确提取返回的行数超过请求的行数”;,sql,oracle,plsql,oracle-apex,oracle-apex-5,Sql,Oracle,Plsql,Oracle Apex,Oracle Apex 5,我正在使用OracleApex 5,当我尝试使用以下列代码运行该应用程序时,我收到一个错误消息:“精确获取返回的行数超过请求的行数” 使用INTO子句时只能选择一行。通常,添加WHERE子句条件以限制返回的数据仅为一行。或者,这取决于您尝试执行的操作。变量terranumber只能包含一个值。所以,如果选择“查询返回多行”,它将抛出此错误 如果需要任何一个值: declare terranumber varchar2(40); begin select concat(year,
使用INTO子句时只能选择一行。通常,添加WHERE子句条件以限制返回的数据仅为一行。或者,这取决于您尝试执行的操作。变量terranumber只能包含一个值。所以,如果选择“查询返回多行”,它将抛出此错误 如果需要任何一个值:
declare
terranumber varchar2(40);
begin
select concat(year, '-') into terranumber
from mp_applications
where rownum = 1;
end;
/
也许您希望获得年度的max
(或min
):
或者,您可能希望逐个访问所有值:
begin
for rec in (select concat(year, '-') as year from mp_applications)
loop
-- use rec.year as required
end loop;
end;
/
只需尝试从MP_应用程序运行
选择CONCAT(年份“-”)。您将看到它返回多个行,这些行显然不能放在单个变量中。是否要获取任何一个值?可能是max/min?当我使用rownum时,它只从调用的列中获取第一行(在concat中)。如何获取列的最新行?(TOP和LIMIT在Oracle Apex 5上不起作用)@thelamp您可以使用rownum值:选择*从(您的选择+按日期排序),其中rownum<10
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;
/