Ich entwickle eine Datenbankanwendung, die Scores berechnet und das Ranking von Personen zeigt. Was ich tue, ist das Ausführen von Prozeduren, die die Scores berechnen und diese Scores in einer Datenbanktabelle speichern. Daraus wird ein Endergebnis berechnet. Ich zeige dann das Ranking nach der Punktzahl.Hauptdaten vorübergehend in der Datenbank für jeden Benutzer
Worum ich mir Sorgen mache, ist folgendes: Was wäre, wenn zwei Benutzer gleichzeitig die Anwendung benutzen? Wenn einer die Punkte bereits berechnet hat und kurz bevor der Punktestand abgerufen wird, führt der andere Benutzer die Prozedur aus und überschreibt die Tabelle. Da verschiedene Benutzer verschiedene Parameter angeben können, unterscheiden sich die Tabellen. Gibt es eine Möglichkeit, eine eindeutige Tabelle für jeden einzelnen simultanen Benutzer zu erstellen, der gerade diese Anwendung verwendet?
Datenbank: Oracle
Müssen Sie tatsächlich die Ergebnisse materialisieren? Es ist sicherlich möglich, sie in eine temporäre Tabelle zu schreiben (obwohl das in dreischichtigen Anwendungen, in denen die Anwendungssitzung nicht sauber auf eine Datenbanksitzung abgebildet wird, etwas herausfordernd ist). Normalerweise würden Sie das Ergebnis nicht materialisieren, Sie hätten einfach eine gespeicherte Prozedur, die eine Abfrage basierend auf den von Ihnen benötigten Parametern ausführt und eine Ergebnismenge an den Aufrufer zurückgibt. –
Was meinst du mit 'Ergebnismenge'? Meinst du, eine Prozedur kann etwas wie einen Tisch zurückgeben? – grindel
Eine Funktion kann einen 'sys_refcursor' zurückgeben, der nur das Ergebnis einer Abfrage ist. Eine Prozedur kann auch einen out-Parameter vom Typ sys_refcursor haben. –