Plsql &引用;ORA-01422:exact fetch返回的行数大于请求的行数;我在执行块时遇到此错误
我想用plsql块显示4列,但我无法运行我编写的代码。有什么建议吗Plsql &引用;ORA-01422:exact fetch返回的行数大于请求的行数;我在执行块时遇到此错误,plsql,Plsql,我想用plsql块显示4列,但我无法运行我编写的代码。有什么建议吗 DECLARE rsid objectbase.asset_id%TYPE; obid i18n_objectbase.object_id%TYPE; nme i18n_objectbase.name%TYPE; descp i18n_objectbase.short_description%TYPE; BEGIN SELECT ob.asse
DECLARE
rsid objectbase.asset_id%TYPE;
obid i18n_objectbase.object_id%TYPE;
nme i18n_objectbase.name%TYPE;
descp i18n_objectbase.short_description%TYPE;
BEGIN
SELECT
ob.asset_id,
o.object_id,
o.name,
o.short_description
INTO
rsid,
obid,
nme,
descp
FROM
objectbase ob
JOIN i18n_objectbase o ON ( ob.object_id = o.object_id );
dbms_output.put_line(rsid
|| obid
|| nme
|| descp);
END;
/
类似这样的东西可以解决问题,但我不确定您为什么需要这种PL SQL代码(请注意,我已经简化了where部分)…如下所示:
DECLARE
rsid varchar2(100);
obid varchar2(100);
nme varchar2(100);
descp varchar2(100);
cursor c_test
is
SELECT ob.asset_id
, ob.object_id
, ob.name
, ob.short_description
FROM objectbase ob;
BEGIN
FOR i in c_test loop
rsid := i.asset_id;
obid := i.object_id;
nme := i.name;
descp := i.short_description;
dbms_output.put_line(rsid
|| obid
|| nme
|| descp);
END LOOP;
END;
这是你的电话号码
然后用这个:
DECLARE
rsid varchar2(100);
obid varchar2(100);
nme varchar2(100);
descp varchar2(100);
BEGIN
FOR i IN (SELECT ob.asset_id
, ob.object_id
, ob.name
, ob.short_description
FROM objectbase ob) LOOP
rsid := i.asset_id;
obid := i.object_id;
nme := i.name;
descp := i.short_description;
dbms_output.put_line(rsid
|| obid
|| nme
|| descp);
END LOOP;
END;
/
这是你的电话号码
下面是表和列的代码:
DECLARE
rsid objectbase.asset_id%TYPE;
obid i18n_objectbase.object_id%TYPE;
nme i18n_objectbase.name%TYPE;
descp i18n_objectbase.short_description%TYPE;
BEGIN
FOR i IN (SELECT
ob.asset_id,
o.object_id,
o.name,
o.short_description
FROM
objectbase ob
JOIN i18n_objectbase o ON ( ob.object_id = o.object_id )) loop
rsid := i.asset_id;
obid := i.object_id;
nme := i.name;
descp := i.short_description;
dbms_output.put_line(rsid
|| obid
|| nme
|| descp);
END LOOP;
END;
嘿@VBokšić谢谢你的回答,非常感谢。但我希望这可以通过简单的pl sql块来完成。没有光标什么都没有。另外,我们在i18n_objectbase中没有名称和描述。您使用的另一个表在哪里?Hi@Shubhamgautam答案已更新。现在它不使用光标,而是在选择结果集中循环。@Shubhamgautam正如我在回答中所解释的,我已经简化了where部分。根据我的回答,你现在应该可以自己做一些工作了,对吗?您只需要在where子句中添加一小部分。我已经为您的问题制作了一个示例并创建了一个演示环境,这还不够吗?如果数据集中有一行,您的
选择进入将很好,因为它填充变量并打印它们的值。如果有两行,您希望它做什么?