create or replace function lstnation (listdisplay in varchar2)
return varchar2 is
nName varchar2 (1000) default null;
listD varchar2(1000) default null;
cursor display_nation
is
select nation.n_name
from nation
inner join region
on region.r_regionkey = nation.n_nationkey
where region.r_regionname = listdisplay;
BEGIN
open display_nation;
loop
fetch display_nation into nName;
exit when display_nation%notfound;
IF
listD := listD || RTRIM(nName)||' , ';
end loop;
close display_nation;
return listD;
end lstnation;
/
DECLARE
rKey region.r_regionkey%type;
rName region.r_name%type;
nList varchar2(1000);
cursor outer_block is
select region.r_regionkey, region.r_name, lstnation(region.r_name)
from region;
BEGIN
open outer_block;
loop
fetch outer_block into rKey, rName, nList;
exit when outer_block%notfound;
dbms.output.put_line(rkey || ' ' || RTRIM(rName) || ': '|| nList);
end loop;
close outer_block;
end;
/
行/COL错误
19/12 PLS-00103:当期望下列之一时遇到符号“=”:。(*@%&=-+at in是mod余数而不是rem,那么<指数(**)><>或!=或~=>=<=<>和或类似于2类似于4类似于多集成员子多集之间的
20/2 PLS-00103:当需要下列操作之一时遇到符号“end”:begin函数pragma过程子类型类型当前游标删除存在之前
通过使用listagg函数替换游标循环,可以节省一些编码和效率
select listagg(rtrim(nation.n_name),',')
from nation
inner join region
on region.r_regionkey = nation.n_nationkey
where region.r_regionname = listdisplay;
因此它将整理所有匹配的行,并使用传入的分隔符。需要注意的一点是,您有listd varchar2(1000)
,所以只要查询的结果小于1000,就可以了。如果希望得到更大的结果集,则可能需要增加或使用CLOB。
如果出于某种原因,您仍然希望使用循环方法,那么您需要修复If语句:
loop
fetch display_nation into nName;
exit when display_nation%notfound;
IF <condition> THEN
listD := listD || RTRIM(nName)||' , ';
END IF;
end loop;
问题内容: 我正在运行以下脚本- 并得到了错误- 问题答案: 在PL / SQL块中,select语句应包含一个子句:
**你好,我试图在oracle中执行FOR循环,但它引发了以下错误 ORA-06550:第6行,第1列:PLS-00103:当期望下列之一时遇到符号“for”:*&=-+;in是mod余数而不是rem<>或!=或~=>=<=<>和或类似于2类似于4类似于multiset成员submultiset之间的符号“;”替换为“for”以继续。**
问题内容: 尝试使用一个过程创建简单的程序包: 但是我明白了 任何帮助将不胜感激 问题答案: 包装由包装规格和包装主体组成。您在规范中声明了该过程(假设您希望该过程是公共的)并在主体中实现它。 因此,例如,您将创建包装规格 然后,您将创建包主体
我得到以下错误: 回路 * 第15行错误:
尽管我仔细检查了代码,但还是出现了以下错误。我不知道我错过了什么。 行/列错误 31/1 PLS-00103:在期望以下之一时遇到符号“END”: 代码:
我正在编写一些为数据库创建表的PL/SQL代码。 当我尝试跟踪代码时,我一直收到错误PLS-00103。我查看了其他线程,它表明缺少循环的开始,但我看不到可能在哪里。 设置服务器输出 执行THELO; 问题: PLS-00103:在预期以下情况之一时遇到符号“CREATE”:(begin case declare end exception exit for goto if loop mod nu