Erstellen von Tabellen vor dem erstellen eines Cursors in Oracle
Habe ich eine PL/SQL Prozedur erstellt eine temporäre Tabelle und dann extrahiert die Daten aus dieser temporären Tabelle verwenden von Cursorn, verarbeitet die Daten und dann löscht die temporäre Tabelle. Aber Oracle erlaubt nicht die Verwendung von cursor, wenn die Tabelle existiert nicht in der Datenbank.
Bitte helfen Sie mir, damit umgehen.
- Warum tun Sie erstellen und löschen Sie anschließend die temporären Tabellen erstellen, anstatt Sie noch einmal, und verwenden Sie immer und immer wieder? - Wenn Sie kommen aus einer SQL Server-hintergrund, Oracle ist das anders. Temporäre Tabellen sind permanente Objekte, halten die temporären Daten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deine Aussage ist nicht ganz korrekt. Sie können einen cursor für ziemlich beliebige Abfragen. Siehe unten:
(Mehr details hier - vor allem diese kurzen proc überhaupt nicht sicher, da der name der Tabelle ist fest und nicht session-abhängig).
Es ist (durchaus) ein bisschen hässlich, und ich bin nicht dafür, die Sie verwenden, vielmehr sollten Sie überlegen, ob Sie brauchen, die Prozedur-spezifische temporäre Tabelle.
Sehen diese anderen Artikel:
Konnte Sie nicht verwenden, eine Globale temporäre Tabelle? Braucht man eigentlich eine temporäre Tabelle überhaupt? (d.h. nicht über einen cursor für die select-Anweisung, die Sie verwenden würden, um zu füllen, die Tabelle arbeiten?)
Oder, wenn Sie wollen, um Unterschiede zu vermeiden zwischen globalen temporären Tabellen "normalen" permanent-Tabellen können Sie verwendet werden, um (siehe Oracle docs auf temp-Tabelle die Daten-Verfügbarkeit, Lebensdauer usw.), erstellen Sie einfach in der Tabelle zunächst (nologging). Vorausgesetzt, niemand anders ist, die diese Tabelle verwenden, die Prozedur kürzen könnte, vor/nach Ihrer Verarbeitung.