sql >> Database teknologi >  >> RDS >> Oracle

Hvad er forskellen mellem USER() og SYS_CONTEXT('USERV','CURRENT_USER')?

Fra manualen på:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#SQLRF51825

CURRENT_USER

Navnet på databasebrugeren, hvis rettigheder er aktive i øjeblikket. Dette kan ændre sig i løbet af en session for at afspejle ejeren af ​​enhver aktiv definerers rettighedsobjekt. Når ingen definerers rettighedsobjekt er aktivt, returnerer CURRENT_USER den samme værdi som SESSION_USER. Når det bruges direkte i brødteksten i en visningsdefinition, returnerer dette den bruger, der udfører markøren, der bruger visningen; det respekterer ikke synspunkter, der bruges i markøren, som værende definererens rettigheder.

SESSION_USER

Navnet på databasebrugeren ved logon. For virksomhedsbrugere returnerer skemaet. For andre brugere returnerer databasebrugernavnet. Denne værdi forbliver den samme i hele sessionens varighed.

Så der er en forskel mellem SESSION_USER og CURRENT_USER, især når CURRENT_USER bruges i en lagret procedure eller funktion.

Jeg må indrømme, at jeg dog ikke ved, hvad udtrykket "virksomhedsbruger" betyder.

Btw:der er en tredje:

SESSION_USERID

Identifikationen af ​​databasebrugeren ved logon.



  1. Sådan installeres Kubernetes ved hjælp af Kubeadm

  2. PostgreSQL:Vælg data med et like på tidsstempelfeltet

  3. Alternativ til lead lag-funktion i SQL Server 2008

  4. På jagt efter hurtig lokal opbevaring