Windows-Benutzerkennung in PL/SQL auslesen

Mit folgendem Code wird eine View erstellt, welche die Datensätze anhand des Benutzernamens filtert, der vom Client an den DB-Server übermittelt wird.

CREATE VIEW v_user_view AS 
SELECT col1, col2
FROM table
WHERE user_login = 
(
 SELECT LOWER((sys_context('USERENV', 'OS_USER'))) 
 FROM DUAL
);

Das Kernelement dieser Abfrage ist die Anweisung

sys_context('USERENV', 'OS_USER')

Diese gibt den Benutzernamen zurück, mit dem vom Client auf die View zugegriffen wird.

Da es sich bei der vorgenannten Anweisung um einen PL/SQL-Befehl handelt, habe ich diesen in eine SQL-Abfrage integriert. Somit wird ein Umgebungswechsel zwischen SQL und PL/SQL verhindert und die Performance der Abfrage erhöht sich bei großen Datenmengen deutlich.

Mit dieser Methode lassen sich dynamisch Views erstellen, die beispielsweise nur die Datensätze enthalten, die vom aktuellen Benutzer erstellt wurden.