MySQL: Problem mit Cursor

TimoTH

Mitglied
Hallo,
ich komme eigentlich aus der Oracle Welt und soll nun zum ersten Mal etwas komplizierteres in MySQL erstellen.
Dabei scheitere ich aber an den Cursor.

In Oracle würde ich es so (ungefähr) machen:
Code:
CURSOR c_cursor IS SELECT_STATEMENT

--um auf die Daten zuzugreifen
For r_row in c_cursor loop
    insert into table (column1) values(r_row.value1);
end loop;

In MySql finde ich derweilen nichts so "komfortables". Wie ich einen Cursor definiere, Open und Close ist mir alles klar.
Mein Problem ist, wie ich an die Daten aus der aktuellen Zeile des Cursors herankommen soll. Das einzige wie ich es zur Zeit verstehe, ist sich entsprechend viele Variablen anzulegen, und über ein Fetch diese mit Werten zu füllen. Aber wenn mir nun der select des Cursors 20 Spalten liefert, kann ich nicht 20 Variablen zur Zwischenspeicherung anlegen, oder? Da muss es doch was bessers geben.

Hoffe mal, ich habe mich einigermaßen verständlich ausgedrückt, und jemand kann mich da auf die richige Spur bringen?

Viele Grüße!
Timo
 
an was ähnlichem habe ich auch mal gehangen.

ein rat : programmier das lieber in einer sprache, die nicht in, sondern vor mysql läuft - PHP, C#, Java, Perl. dir prozedurale spracherweiterung von mysql ist - gelinde gesagt - echte schafsch****e.

die bindungsstärke der spracherweiterung ist weit von dem entfernt, was du unter PL/SQL kennst.

wenn du unbedingt open source pl/sql programmieren möchtest, dann nimm postgres. da ist das wenigstens halbwegs vernünftig zuwege gebracht worden.

grüße
gore
 
Hi!
Es ist ja nicht so, dass ich unbedingt mit MySQL arbeiten möchte. Manchmal hat man halt Vorgaben von Kunden, die es einzuhalten gilt..

Naja, aber wenn MySQL eine eher bescheidene prozedurale Umsetzung besitzt, muss ich mich halt damit zurechtfinden. Den den Code von der Datenbank auf den Server zu verlagern und dafür dann zig Datenbankaufrufe zu starten, weil die Prozedur noch ein wenig mehr macht, als nur den Cursor auszulesen, nun das ist auch keine Alternative...

Aber zumindest mal danke für die Antwort...


Gruß!
Timo
 
eine doofe frage habe ich dann doch noch.

wenn du ein select hast und damit ein insert loop'st, warum machst Du nicht direkt in INSERT mit SELECT? ... das kann man im übrigen dann auch wieder vor der Datenbank laufen lassen.
 
Hi,
der Codeschnipsel sollte auch nur mein Problem verdeutlichen, das ich beim Zugriff auf die Werte habe. Hast natürlich recht, wenn du sagst, dass in diesem Falle ein Cursor nicht unbedingt nötig wäre...
Gruß!
Timo
 
Zurück