Oracle の Connect By Prior を使用して、カーソルを使用して管理レポート チェーンをループしたいと考えています。次に順序が逆になるため、VP が一番上にあり、開始したレコードが一番下になります (A.Corpid)。
上部にカーソル C1 があり、特定の基準に従って corpid を取得します
そのテーブルから返された各正規名 (6 行あるとします) を、定義済みの TIER1、TIER2、TIER3 変数に格納します。
どういうわけか、「TIER」という単語と行番号 i を組み合わせる方法がわかりません
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;
オラクルは「||」について文句を言います
(ORA-06550: 33 行目、31 列目: PLS-00103: 次のいずれかを予期しているときに記号 "|" が検出されました: := . ( @ % ; )
私も連結しようとしましたが、それもうまくいきませんでした
ORA-06550: 行 33、列 26: PLS-00306: 'CONCAT' の呼び出しで引数の数または型が間違っています