"exact fetch returns more than requested number of rows"
"exact fetch returns more than requested number of rows"
我正在使用 Oracle Apex 5,当我尝试 运行 应用程序使用以下代码作为列时,我收到一条错误消息 "exact fetch returns more than requested number of rows"
DECLARE
Num VARCHAR2(40);
BEGIN
SELECT CONCAT(YEAR, '-')
INTO Num FROM APPS;
END;
使用 INTO 子句时只能选择一行。通常,您添加 WHERE 子句条件以将返回的数据限制为仅一行。或者当然取决于你想做什么。
变量terranumber只能保存一个值。所以,如果你 select 查询 returns 多行,它会抛出这个错误。
如果您想要以下任一值:
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;
/
我正在使用 Oracle Apex 5,当我尝试 运行 应用程序使用以下代码作为列时,我收到一条错误消息 "exact fetch returns more than requested number of rows"
DECLARE
Num VARCHAR2(40);
BEGIN
SELECT CONCAT(YEAR, '-')
INTO Num FROM APPS;
END;
使用 INTO 子句时只能选择一行。通常,您添加 WHERE 子句条件以将返回的数据限制为仅一行。或者当然取决于你想做什么。
变量terranumber只能保存一个值。所以,如果你 select 查询 returns 多行,它会抛出这个错误。
如果您想要以下任一值:
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;
/