PLS-00436: Implementierung Beschränkung: kann nicht auf Felder von BULK-BIND-Tabelle der Datensätze
Ich bekomme diese Fehlermeldung, wenn ich den Aufruf der Prozedur 'archive_things", die in den Kurven gibt den Fehler an INSERT INTO deleted_part_things
(id, part_id, file_name, file_type, thing, editable)
was bedeutet das?
PROCEDURE archive_things ( p_part_id IN NUMBER )
IS
thing_list bean_list;
BEGIN
thing_list := get_thingss_info(p_part_id);
insert_deleted_things(thing_list);
END archive_things;
FUNCTION get_things_info ( p_part_id IN NUMBER)
RETURN bean_list
IS
attachment_list bean_list;
BEGIN
SELECT file_thing_bean (id, hot_part_id, file_name, file_type, thing, editable)
BULK COLLECT INTO thing_list
FROM part_things
WHERE part_id =hot_part_id;
RETURN thing_list;
END get_things_info;
PROCEDURE insert_deleted_things( p_bean_list IN bean_list )
IS BEGIN
FORALL x IN INDICES OF p_bean_list
INSERT INTO deleted_part_things
(id, part_id, file_name, file_type, thing, auditable) <<<<< ERROR HERE!!!!!
VALUES
( p_bean_list(x).id, p_bean_list(x).parent_id, p_bean_list(x).file_name, p_bean_list(x).file_type,
p_bean_list(x).thing, p_bean_list(x).editable
);
END insert_deleted_things;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei Punkte:
PLS-00436
ist eine Einschränkung vor 11G, bei denen Sie nicht in der Lage, Referenz-Spalten in einerrowtype
imforall
. Es gibt ein paar Möglichkeiten, um ihn herum:Einer, wie Ollie vorgeschlagen, ist die gleiche Anzahl von Spalten in Ihrer Tabelle, wie in Ihrem
bulk collect
. Dies ist nicht immer möglich.Tom Kyte schlägt Aktionen festlegen. Die Beschränkung auf diese ist die Größe der
bulk collect
du tust. Wenn es größer ist als die Höhe der rückgängig wirst du Probleme haben. Auch, wenn Sie möchten, etwas anderes tun, mit den Daten, dann haben Sie zu tun, dass separat.Die Letzte option ( die ich kenne ich bin mir sicher es sind mehr ) ist zu sammeln Ihre Unterlagen in einzelnen
types
eher als einerowtype
als pro den folgenden. Der Nachteil ist, dass es möglicherweise nicht so schnell wie Tom ' s Methode, und es ist bei weitem nicht so klar wie ollies.Ich habe gerade festgestellt Sathya ' s Methode, das würde auch funktionieren, erfordert aber eine Menge SQL ausgeführt werden.