ORA-06532: Subskript außerhalb der limit-Fehler
Ich bin immer ein ORA-06532 Fehler in meinem pl/sql-Prozedur. Es hat zu tun mit meinem array, und es scheint passiert zu sein auf die Zeile, die beginnt: "term_1 := ...". Die Abfrage, die auswählt, in 7 Aufzeichnungen bekommt, so sollte es sein, die gleiche Menge wie das, was ich Vorschlage. Ich bin ein wenig neu in der SQL-array-Ding, so dass ich kann haben etwas verpasst, offensichtlich. Jede Hilfe ist willkommen, danke.
DECLARE
listOfTerms VC50_ARRAY;
term_1 varchar2(30);
term_2 varchar2(30);
term_3 varchar2(30);
term_4 varchar2(30);
term_5 varchar2(30);
term_6 varchar2(30);
term_7 varchar2(30);
BEGIN
SELECT apl.awdp_acad_terms
BULK COLLECT INTO listOfTerms
FROM fa_years fay
JOIN award_periods_ls apl
ON apl.award_periods_id = fay.award_periods_id
WHERE (SELECT b.awdp_fa_year as faYear
FROM award_periods_ls a
JOIN coll18_test.fa_years b ON a.award_periods_id = b.award_periods_id
WHERE awdp_acad_terms = v_ug_term) = fay.awdp_fa_year
ORDER BY apl.awdp_acad_terms DESC;
term_1 := listOFTerms(1);
term_2 := listOFTerms(2);
term_3 := listOFTerms(3);
term_4 := listOFTerms(4);
term_5 := listOFTerms(5);
term_6 := listOFTerms(6);
term_7 := listOFTerms(7);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke du bist über-erschweren dies. Sie code ist äquivalent zu:
Können Sie verweisen Sie auf die Elemente, die in Ihrer Art, durch Ihre index-Werte, so
term_1
ist das gleiche wiet_listofterms(1)
. Es gibt keine Notwendigkeit, erstellen Sie eine zusätzliche variable mit dem gleichen Wert; Sie verweisen können es in der gleichen Weise, solength(term1)
undlength(t_listofterms(1))
sind auch die gleichen.Gibt es eine Menge Sachen gibt, über die array-Verarbeitung, aber PSOUG hilfreich ist, ist die Dokumentation.
Beurteilung durch Ihren Kommentar können Sie werden, verweisen auf die Sammlung explizit, d.h.
something := t_listofterms(7)
. Dies setzt Voraus, dass es eine bestimmte Anzahl von Zeilen.Bulk collect
füllt eine Sammlung von 1 zu n, wo n wird die Anzahl der von der Abfrage zurückgegebenen Zeilen. Es ist oft besser, Durchlaufen diese, wenn Sie wollen, etwas zu tun mit es anstelle von expliziten verweisen. So etwas wie,LOOP
wenn SieBULK COLLECT
ohneLIMIT
.