Ich erhalte ORA-06531: Reference to uninitialized collection
, wenn ich eine Speicherprozedur mit den folgenden Details führe:
Benutzerdefinierter Datentyp:
%Vor%Gespeicherte Prozedurdefinition:
%Vor%Ich verwende Folgendes, um die Prozedur aufzurufen:
%Vor%Bitte helfen Sie mir hier draußen. Danke im Voraus.
In Ihrer TEST-Prozedur haben Sie v
als OUT-Parameter deklariert - das bedeutet, dass die Prozedur die Ausgabesammlung in der Prozedur initialisieren muss (z. B. v := T();
). Selbst wenn Sie den aufrufenden Block ändern, um u_t
zu initialisieren, wird dies nicht helfen, da die u_t
-Auflistung nicht an die Prozedur übergeben wird - sie empfängt nur, was die Prozedur zurückgibt.
Ändern Sie Ihren Code wie folgt:
%Vor%Bitte beachten Sie, dass String-Konstanten in PL / SQL in einfache Anführungszeichen gesetzt werden müssen, nicht in Anführungszeichen.
Auch - die Verwendung ähnlicher Variablennamen, die entgegengesetzte Bedeutungen in der Prozedur und dem aufrufenden Block haben, trägt nur zur Verwirrung bei. Gewöhnen Sie sich an, aussagekräftige Namen zu verwenden, und Sie ersparen sich später viel Verwirrung.
Teilen und genießen.
Ich hatte heute eine ähnliche Frage, Sie müssen Ihre Variable u_t initialisieren, überprüfen Sie diese Antwort, um mehr zu erhalten
Tags und Links oracle plsql stored-procedures