sql >> Database >  >> RDS >> Oracle

Wat is het verschil tussen USER() en SYS_CONTEXT('USERENV','CURRENT_USER')?

Uit de handleiding op:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#SQLRF51825

CURRENT_USER

De naam van de databasegebruiker wiens bevoegdheden momenteel actief zijn. Dit kan tijdens de duur van een sessie veranderen om de eigenaar van een actief rechtenobject van de definitie weer te geven. Als er geen rechtenobject van de definitie actief is, retourneert CURRENT_USER dezelfde waarde als SESSION_USER. Wanneer dit rechtstreeks in de hoofdtekst van een weergavedefinitie wordt gebruikt, wordt de gebruiker geretourneerd die de cursor uitvoert die de weergave gebruikt; het respecteert de weergaven die in de cursor worden gebruikt niet als zijnde rechten van de definitie.

SESSION_USER

De naam van de databasegebruiker bij aanmelding. Retourneert het schema voor zakelijke gebruikers. Retourneert voor andere gebruikers de gebruikersnaam van de database. Deze waarde blijft gedurende de hele sessie hetzelfde.

Dus er is is een verschil tussen SESSION_USER en CURRENT_USER, vooral wanneer CURRENT_USER wordt gebruikt in een opgeslagen procedure of functie.

Ik moet echter toegeven dat ik niet weet wat de term 'zakelijke gebruiker' betekent.

Trouwens:er is nog een derde:

SESSION_USERID

De identifier van de databasegebruiker bij het inloggen.



  1. Voordelen van het gebruik van Microsoft Access-sjablonen

  2. Beëindigt het gebruik van een open SQL-verbinding sluiten

  3. DATEDIFF() geeft verkeerde resultaten in SQL Server? Lees dit.

  4. Alle controlebeperkingen in SQL Server-database inschakelen - SQL Server / TSQL-zelfstudie deel 88