Eine gespeicherte Prozedur ist angegeben, die nicht geändert werden kann. Es gibt einen Cursor mit einer Anzahl von Spalten im Ergebnis zurück. Gibt es einen einfachen Weg in Oracle BULK COLLECT INTO
nur eine Teilmenge der Spalten durch den Cursor zur Verfügung gestellt?Massensammeln einer Untergruppe von Spalten von Oracle Cursor
FOR
Schleifen und neue Sammlungstypen sollten vermieden werden. Ich möchte nicht alle Daten vom Cursor abrufen, nur die Daten, die benötigt werden.
Zum Beispiel auf BULK COLLECTION INTO
alle Spalten aus dem Cursor funktionieren würde, wie folgt vor:
FETCH s_cursor BULK COLLECT INTO staff_ids;
Hmmm, ich sehe, Sie haben eine zusätzliche Einschränkung für keine neuen Sammlungstypen hinzugefügt. Welches Problem versuchen Sie zu lösen? Soll es die Leistung verbessern? –
Ja, im Grunde möchte ich alle Ressourcen der Sprache verwenden, um Leistungslecks zu vermeiden. Ich denke, ich muss eine gespeicherte Prozedur kopieren und nicht benötigte Spalten entfernen, um zu vermeiden, dass mehr Daten als benötigt abgerufen werden. Obwohl dies zu einer Code-Duplizierung führen wird. – Leonid
Ja, um Performance-Lecks zu vermeiden, benötigen Sie eine modifizierte/neue gespeicherte Prozedur. Wenn Sie nach dem Öffnen eines Cursors unerwünschte Spalten platzieren, bedeutet dies, dass die Datenbank bereits die ganze Arbeit erledigt hat. Daher ist das Performance-Leck bereits eingetreten. –