Announcement

Collapse
No announcement yet.

Struktur eines REF CURSOR dynamisch ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Struktur eines REF CURSOR dynamisch ermitteln

    Hallo Oracle-Entwickler,

    Ist es möglich eine schwache REF CURSOR Variable (oder besser gesagt das dahinter liegende Cursorobjekt) hinsichtlich der spezifizierten Spalten zu analysieren?

    Hintergrund: Ich benötige eine Funktion, die eine Variable vom Typ REF CURSOR übergeben bekommt, für Auswertungszwecke. Die genaue Definition des Cursors steht erst zur Laufzeit fest, d.h. der Cursor kann eine unterschiedliche Anzahl an Spalten von unterschiedlichen Typen haben. (Das ist ja gerade der Vorteil von schwachen Cursor Variablen). Für ein "normales" FETCH INTO <VarBlock> muß jetzt aber der <VarBlock> typmässig zur Spaltenliste des Cursor passen (was meines Erachtens die Vorteile des schwachen REF CURSOR ad absurdum führt).
    Ich hab seit zwei Tagen alle möglichen Dokus gewälzt und Google strapaziert und habe bald die Befürchtung, das es dafür keine Lösung gibt. Ja, ok, eine Lösung gibt es immer - aber welche ?
    Irgendwie muß das gehen, eine OCI8 Applikation kann das schließlich auch! Wenn ich z.B. in PHP eine Oracle-Funktion aufrufe, die mir genau so einen REF CURSOR zurückliefert, dann kann ich den (in PHP) auch Abfragen was für Spalten er hat! Ich brauch also sowas wie OCINumCols und OCIColumnName für PL/SQL!

    Besten Dank
    Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

  • #2
    Hallo Falk,

    hab auch längere Zeit nachgedacht, aber leider keine Idee.

    Hast Du schon hier geschaut:

    http://www.oracleplsqlprogramming.com/
    http://asktom.oracle.com

    Beim Tom gibt es schon sehr interessante Diskussionen wegen ählichen Problemen.

    Hast Du es schon mit einem TAR probiert?

    lg Dietma

    Comment


    • #3
      Hallo Dietmar,

      die beiden Links hatte ich noch nicht - werd ich gleich mal durchstöbern. <br />

      Einen <b>T</b>echnical <b>A</b>ssistance<b> R</b>equest an ORACLE hab ich noch nicht abgesetzt. Ich habe es erst mal auf dem Google-Forum-abgrasen Weg versucht Wenn mir nicht doch noch eine Erleuchtung kommt, wird dies wohl der letzte Ausweg bleiben. Obwohl ich mittlerweile bezweifle dort eine andere Antwort als: This feature is currently not supported, zu bekommen.<br />

      Gruß Fal
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Hallo Falk,

        das mit dem TAR ist immer so eine Sache. Prinzipiell nutze ich dn TAR schon als Hilfe, da man für den Support auch eine menge Teuros hinlegen muß. Was da raus kommt, hängt leider sehr vom Bearbeiter ab.

        Der Herr Feuerstein wird Dir sicher ein Begriff sein.

        Ask Tom ist echt genial. Man muß zwar länger rumstöbern, aber der Tom hat immer eine gute Antwort, die auch viel über die Interna der DB verraten.

        lg Dietmar

        ps: ich vermute auch, daß das nicht geht. Hatte auch einmal ein ähnliches Problem. Ich wollte den Wert einer Variablen zur Laufzeit bekommen. Dies aber dynamisch. d.h. Ich habe den Name der Variablen nur als String und nicht als Variable selber. Soll lt. Support auch nicht gehen. Das wäre aber genial, um eine generelle Typüberprüffungs zu schreiben

        Comment


        • #5
          Hallo Dietmar,

          das Buch von Herrn Feuerstein liegt in seiner deutschen Übersetzung aufgeschlagen vor mir
          Ask Tom sieht recht gut aus, die Quelle werd ich mir auf alle Fälle merken. Hab auch einiges zu dem Thema gefunden! Der Tenor ist aber eindeutig: Für das FETCH auf einen REF CURSOR <b>muß</b> ein zur Selectliste passender Datentyp, Record etc. zur Compilierzeit vorhanden sein - wenn das nicht geht, bleibt statt REF CURSOR nur ein DBMS_SQL Cursor! Leider kann man DBMS_SQL nicht mit "normalen" Cursoren verwenden (
          Das würde für mich bedeuten, das ich alle bestehenden Auswertungen, inkl. der zugehörigen Applikationsteile ändern und auf DBMS_SQL umstellen müßte! Diesen Aufwand wollte ich aber gerade vermeiden.
          Muß ich mir also was anderes einfallen lassen - Schade!

          Besten Dank für deine Unterstützung

          Gruß Fal
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment

          Working...
          X