AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Oracle & Dyn Cursor & Bulk SQL
Thema durchsuchen
Ansicht
Themen-Optionen

Oracle & Dyn Cursor & Bulk SQL

Ein Thema von Robert_G · begonnen am 25. Aug 2004 · letzter Beitrag vom 25. Aug 2004
 
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Oracle & Dyn Cursor & Bulk SQL

  Alt 25. Aug 2004, 13:56
Sorry ihr 2, ich habe mich wohl nicht genau genug ausgedrückt.

PL/SQL Tabelle <> DB Tabelle -> es ist eher so etwas wie eine Collection oder ein Array
Mein Problem ist die Kombi Bulk SELECT und dyn. Cursor.
Würde ich auf das Bulk SELECT verzichten könnte ich es so machen:

SQL-Code:
create or replace procedure TestDynCurNoBulk
(
  pOwner in varchar2
 ,pTable in varchar2
) is
  -- constants
  Lf char(1) := Chr(10);

  -- cursors
  type WeakTypedDynCur is ref cursor;
  DynCur WeakTypedDynCur;

  -- Bulk tables
  type ShortChrTab is table of varchar2(20) index by binry_integer;
  a ShortChrTab;
  b ShortChrTab;
  c ShortChrTab;
begin

  open DynCur for
   'SELECT a' || Lf ||
   ' ,b' || Lf ||
   ' ,c' || Lf ||
   'FROM ' || pOwner || '.' || pTable;

  a(0) := null;
  b(0) := null;
  c(0) := null;

  loop
    fetch DynCur
      INTO a(a.Last + 1)
          ,b(b.Last + 1)
          ,c(c.Last + 1);
    EXIT When DynCur%NotFound;
  end loop;
  close DynCur;
end;
Aber die ständigen Context switches zwischen PL/SQL und SQL würden wie eine angezogene Handbremse wirken.
Per Bulk DML bekomme ich mehrere 100.000 Datensätze in t < 70 ms. Wenn ich durch den Cursor iteriere würde es mehr als 1 Sekunde dauern!

Das Problem ist bei den ersten 2 Varianten im ersten Post, dass Oracle im voraus wissen muss, wie der Cursor "aussieht" um das Bulk SELECT vorbereiten zu können. Er schiebt dabei schließlich in einem Schritt die gesamte Abfrage in die 3 Collections.

Ich fürchte ich muss mit der 3. Variante leben, auch wenn dabei ein kompletter Block kompiliert werden muss -> das kostet wieder min. 10ms
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz