sql >> Base de Datos >  >> RDS >> Oracle

¿Cuál es la diferencia entre USER() y SYS_CONTEXT('USERENV','CURRENT_USER')?

Del manual en:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#SQLRF51825

USUARIO_ACTUAL

El nombre del usuario de la base de datos cuyos privilegios están actualmente activos. Esto puede cambiar durante la duración de una sesión para reflejar el propietario de cualquier objeto de derechos del definidor activo. Cuando ningún objeto de derechos del definidor está activo, CURRENT_USER devuelve el mismo valor que SESSION_USER. Cuando se usa directamente en el cuerpo de una definición de vista, devuelve el usuario que está ejecutando el cursor que está usando la vista; no respeta las vistas utilizadas en el cursor como derechos del definidor.

USUARIO DE SESIÓN

El nombre del usuario de la base de datos en el inicio de sesión. Para usuarios empresariales, devuelve el esquema. Para otros usuarios, devuelve el nombre de usuario de la base de datos. Este valor permanece igual durante toda la sesión.

Entonces hay una diferencia entre SESSION_USER y CURRENT_USER, especialmente cuando CURRENT_USER se usa en un procedimiento o función almacenados.

Sin embargo, debo admitir que no sé qué significa el término "usuario empresarial".

Por cierto:hay una tercera:

ID DE USUARIO DE SESIÓN

El identificador del usuario de la base de datos al iniciar sesión.