我想使用游标来循环使用 Oracle 的 Connect By Prior 的管理报告链。然后颠倒顺序,因此 VP 位于顶部,而我开始的记录位于底部 (A.Corpid)。
顶部有一个光标 C1,它按照某些标准检索 corpid
从该表返回的每个规范名称(比如它有 6 行)我想存储在定义的 TIER1、TIER2、TIER3 变量中。
不知何故,我不知道如何将“TIER”这个词与我的行号结合起来
DECLARE
cursor c1 is
select distinct corpid, cn from Mytable where Country ='ITA';
master varchar2(50);
Tier1 varchar2(50);
Tier2 varchar2(50);
Tier3 varchar2(50);
Tier4 varchar2(50);
Tier5 varchar2(50);
Tier6 varchar2(50);
Tier7 varchar2(50);
Tier8 varchar2(50);
Begin
for rec in c1
loop
dbms_output.put_line(rec.cn);
DECLARE
Cursor C2 is
SELECT CN FROM Mytable A CONNECT BY PRIOR A.reportsto=A.corpid
START WITH A.corpid=rec.corpid
order by rownum desc;
Begin
open C2;
for i in 1..8 loop
fetch C2 into master;
dbms_output.put_line(master);
'Tier'||to_char(i)) :=master ;
end loop;
end;
if TIER1 is null then
TIER1:='';
end if;
*/ remmed out until the variable assignments work */
-- update mytable set VP_TIER1=TIER1 where corpid=rec.corpid;
end loop;
end;
Oracle 抱怨 '||'
(ORA-06550:第 33 行,第 31 列:PLS-00103:在预期以下情况之一时遇到符号“|”::=。(@%;)
我也尝试过 concat 但这也不起作用
ORA-06550:第 33 行,第 26 列:PLS-00306:调用“CONCAT”时参数的数量或类型错误