SQLPLUS und Variablen zuweisen

wobeni

Grünschnabel
Hallo,

wie kann man unter SQLPLUS eine select Ausgabe in eine
Benutzervariable schreiben. Nachfolgend eine kurze Erläuterung der Aufgabenstellung:
DEFINE zn = <Für die Definition der Variable "zn" soll ein select Kommando ausgeführt werden, welches eine Zahl zurück gibt>

Anschliessend sollte die Variable "zn" z.B. in einem insert Kommando benutzt werden.
insert into <table> VALUES ('Mustermann', 'Max', '&zn' );

Vielen Dank
 
Hallo,

komme damit leider nicht ganz klar. Hier nochmal etwa ausführlicher mein Anliegen.

Vorhandene Tabelle:
BEREICH FOLGE IDENTNR KNR THEMANR ZEILE ZEILNR
10 1 12345 100 500 Beispieltext 1
10 1 12345 100 500 Beispieltext-2 2
.....


In diese Tabelle sollen weitere Datensätze eingefügt werden. Allerdings sollte die
Spalte "ZEILNR" entsprechend hochgezählt werden. In obigem Beispiel müsste der
nächste Datensatz also folgendermaßen aussehen.

BEREICH FOLGE IDENTNR KNR THEMANR ZEILE ZEILNR
10 1 12345 100 500 Beispieltext-3 3

Da ich im Vorfeld allerdings nicht weiß, wieviel Zeilen ( Spalte "ZEILNR" ) bereits in der Tabelle vorhanden sind, ermittle ich die Anzahl der vorhandenen Zeilen durch den folgenden select Befehl und möchte diese Ausgabe (Zahl) in eine Variable schreiben, welche dann in dem insert Befehl verwendet wird.

Ermitteln der Zeilenanzahl +1
Wie bekommt man die Ausgabe des folgenden selects in eine Variable geschrieben,
welche ich in dem darauffolgenden INSERT verwenden kann
Variable = select count(zeilnr)+1 from cthema where identnr = '12345' and themanr = '500';

Mit dem folgenden INSERT Befehl ausführen:
insert into cthema VALUES ( '10' , '1' , '12345', '100', '500', 'Beispieltext-2', '< Inhalt-der-Variable-von-select-ausgabe>' );


Vielen Dank
 
Hiermit?

SQL:
insert into cthema VALUES ( '10' , '1' , '12345', '100', '500', 'Beispieltext-2', 
 (select count(zeilnr)+1 from cthema where identnr = '12345' and themanr = '500')
);

Aber Achtung, das ganze ist nicht wirklich sicher! Wenn zwei User gleichzeitig einen solchen Insert machen und beide noch nicht COMMITTED, dann sind hinterher zwei Zeilen mit der selben Zeilennummern in der Tabelle. Das ganze ist also nicht für multiuser ausgelegt und somit - aus der Sicht eines DBAs - falsch!
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück