sql >> Databasteknik >  >> RDS >> Oracle

Vad är skillnaden mellan USER() och SYS_CONTEXT('USERENV','CURRENT_USER')?

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

CURRENT_USER

Namnet på den databasanvändare vars rättigheter för närvarande är aktiva. Detta kan ändras under en sessions varaktighet för att återspegla ägaren till alla aktiva definierares rättighetsobjekt. När ingen definierarens rättighetsobjekt är aktivt returnerar CURRENT_USER samma värde som SESSION_USER. När det används direkt i en vydefinition returnerar detta användaren som kör markören som använder vyn; den respekterar inte vyer som används i markören som definierarens rättigheter.

SESSION_USER

Namnet på databasanvändaren vid inloggning. För företagsanvändare, returnerar schemat. För andra användare, returnerar databasens användarnamn. Detta värde förblir detsamma under hela sessionen.

Så det finns en skillnad mellan SESSION_USER och CURRENT_USER, särskilt när CURRENT_USER används i en lagrad procedur eller funktion.

Jag måste erkänna att jag inte vet vad termen "företagsanvändare" betyder.

Btw:det finns en tredje:

SESSION_USERID

Identifieraren för databasanvändaren vid inloggning.



  1. Installera Oracle Fusion Middleware / WebLogic Server 11g

  2. Hur man tar backup av funktioner endast i Postgres

  3. Lätt WordPress-installation:Hur man installerar WordPress med SQLite

  4. Kan du komma åt värdet för automatisk inkrement i MySQL inom ett uttalande?