Martin1968 Geschrieben 21. Mai 2009 Teilen Geschrieben 21. Mai 2009 Moin! Ich habe mich bei der Ertellung meines Datenmodells vertan und muss nun Werte einer BEstimmten Tabelle umbiegen. Da ich den neuen Wert einigermaßen aufwändig ermitteln muss reicht wohl kein einfaches update. Jetzt denke ich über ein Procedure nach, die das für mich erledigt. Davon habe ich schon einige geschrieben, allerdings eher für spezielle Auswertungen und nicht zur Datenmanipulation. Ich stelle mir das so vor, dass ich die Zeilen der Tabelle einzeln durchgehe, mir den alten Wert auslese, den neuen "errechne" und dann zurückschreibe. Mit Schleifen habe ich nat. auch gearbeitet, aber der Zeilenweise Zugriff auf die Tabellenwerte macht mir Kopfzerbrehcen - geht das mit dem "CURSER" ? Wäre toll, wenn mir jemand helfen könnte. Martin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 21. Mai 2009 Teilen Geschrieben 21. Mai 2009 Hallo, ein Cursor ist genau der richtige Ansatz. Oracle PL/SQL Tutorial: SQL Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Martin1968 Geschrieben 21. Mai 2009 Autor Teilen Geschrieben 21. Mai 2009 (bearbeitet) Danke, ich werde mir das Tuturial ansehen. Martin Bearbeitet 21. Mai 2009 von Martin1968 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 21. Mai 2009 Teilen Geschrieben 21. Mai 2009 Jungs - es gilt der alte Leitsatz: mache nie etwas mit PL/SQL wenn es auch mit reinem SQL geht. Ein einfacher UPDATE reicht vollkommen aus, da braucht man kein PL/SQL und explizite Cursor. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Martin1968 Geschrieben 22. Mai 2009 Autor Teilen Geschrieben 22. Mai 2009 Guten Morgen Dr. Dimitri, ich habe natürlich auch erst an ein Update gedacht, aber das überfordert mich anscheinend :-) Folgendes select listet den zu ändernden Wert und den Wert der neu in die Spalter Att_value gehört: select av.att_value, kst.obj_id from attribute_values av, object kst where av.att_id = 81662 and av.att_value in (select kst.gr_id from object kst where kst.cl_id = 10112 and kst.gr_class = 10001 and kst.gr_id = att_value) and kst.cl_id = 10112 and kst.gr_id = av.att_value Mein Problem ist, dass ich nicht weiss, wie ich den Join zwischen beiden selects innerhalb des Update-Statements verarbeite. Vielleicht kann mir hemand von Euch auf die Sprünge helfen ? Martin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 22. Mai 2009 Teilen Geschrieben 22. Mai 2009 Hi, das nennt sich correlated subquery: UPDATE tabelle a SET (spalte1,spalte2)=(select spalteA,spalteB FROM tabelle b WHERE [b]a.id=b.id[/b] --Hier werden die beiden Mengen eindeutig miteinander verknüpft AND ...) WHERE a.spalteXY=... --Hier evtl. noch die zu berücksichtigende Menge einschränken Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Martin1968 Geschrieben 22. Mai 2009 Autor Teilen Geschrieben 22. Mai 2009 Hi, das nennt sich correlated subquery: UPDATE tabelle a SET (spalte1,spalte2)=(select spalteA,spalteB FROM tabelle b WHERE [b]a.id=b.id[/b] --Hier werden die beiden Mengen eindeutig miteinander verknüpft AND ...) WHERE a.spalteXY=... --Hier evtl. noch die zu berücksichtigende Menge einschränken Dim Muss ich jetzt erst mal genauer anschauen, aber VIELEN DANK!:uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Martin1968 Geschrieben 22. Mai 2009 Autor Teilen Geschrieben 22. Mai 2009 Muss ich jetzt erst mal genauer anschauen, aber VIELEN DANK!:uli Hat funktioniert - Klasse! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.