sql >> Databáze >  >> RDS >> Oracle

Jaký je rozdíl mezi USER() a SYS_CONTEXT('USERENV','CURRENT_USER')?

Z příručky na:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#SQLRF51825

CURRENT_USER

Jméno uživatele databáze, jehož oprávnění jsou aktuálně aktivní. To se může během trvání relace změnit, aby odráželo vlastníka jakéhokoli aktivního objektu s právy definujícího. Pokud není aktivní žádný objekt s právy definujícího, vrátí CURRENT_USER stejnou hodnotu jako SESSION_USER. Při použití přímo v těle definice pohledu to vrátí uživatele, který spouští kurzor, který používá pohled; nerespektuje pohledy použité v kurzoru jako práva definujících.

SESSION_USER

Jméno uživatele databáze při přihlášení. Pro podnikové uživatele vrací schéma. Pro ostatní uživatele vrátí jméno uživatele databáze. Tato hodnota zůstává stejná po celou dobu trvání relace.

Takže existuje rozdíl mezi SESSION_USER a CURRENT_USER, zvláště když je CURRENT_USER použit v uložené proceduře nebo funkci.

Musím se přiznat, že nevím, co pojem "podnikový uživatel" znamená.

Btw:existuje ještě třetí:

SESSION_USERID

Identifikátor uživatele databáze při přihlášení.



  1. Přidání omezení CHECK do existující tabulky v SQL Server (T-SQL)

  2. Jak změnit hodnotu automatického přírůstku databáze MySQL / MariaDB

  3. Přehled nových uložených procedur v PostgreSQL 11

  4. ORA-01830:Obrázek formátu data končí před převodem celého vstupního řetězce / Vyberte součet v dotazu na datum