Hallo,
folgendes Probelm: Ich sitze hier an meiner Oracle-Datenbank und bekomme es einfach nicht hin, folgendes SELECT liefert mir die IDs, die ich UPDATEN möchte:
|
MySQL-Abfrage(n)
|
1
|
SELECT a.datnr FROM dbp_datentraeger a, dbp_verleih_enthaelt b WHERE b.datnr = a.datnr AND b.VNR=62;
|
Dabei kann dieses SELECT auch mehrere Zeilen zurückgeben, die alle aktualisiert werden sollen, quasi so:
|
MySQL-Abfrage(n)
|
1
|
UPDATE dbp_datentraeger SET vanz = vanz-1 WHERE datnr=(SELECT a.datnr FROM dbp_datentraeger a, dbp_verleih_enthaelt b WHERE b.datnr = a.datnr AND b.vnr=62);
|
Das funktioniert aber nur solange nur eine Zeile zurückgegeben wird, sind es mehr kommt ein Fehler. Hat irgendwer eine Idee, wie man das UPDATE sonst gestalten könnte? Habe es auch schon mit einem Cursor probiert, aber aus irgendeinem Grund durchläuft er dann die Schliefe nichtmal einmal.
Beste Grüße,
OnkelJürgen
Edit:
Okay, hat sich erledigt folgendes funktioiniert, aber der doofe APEX-Client hat es nich korrekt angezeigt.
|
MySQL-Abfrage(n)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
declare
cursor cur is
SELECT b.datnr AS datnr FROM dbp_datentraeger a, dbp_verleih_enthaelt b WHERE b.datnr = a.datnr AND b.VNR=62 for UPDATE of a.VANZ;
datnr DBP_DATENTRAEGER.DATNR%type;
rec cur%rowtype;
begin
for rec in cur loop
update DBP_DATENTRAEGER a SET a.VANZ=a.VANZ-1 WHERE current of cur;
end loop;
end;
|
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »OnkelJürgen« (25. Januar 2009, 01:40)