Te doy la bienvenida a nuestro espacio, ahora encontrarás la respuesta de lo que buscas.
Solución:
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.
SESIÓN_USUARIO
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 duración de la sesión.
Por lo tanto, allí es 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:
SESIÓN_IDUSUARIO
El identificador del usuario de la base de datos en el inicio de sesión.
sys_context('USERENV', 'CURRENT_SCHEMA')
– El esquema que se está utilizando actualmente y, como ya descubrió, se puede cambiar con alter session
sys_context('USERENV', 'SESSION_USER')
– El usuario que se utilizó para la autenticación durante la creación de la sesión y no se puede cambiar
sys_context('USERENV', 'CURRENT_USER')
– Más o menos como “session_user” obsoleto (al menos según la documentación de 10g)
(editado de acuerdo con la respuesta de @a_horse_with_no_name y la referencia que dio a los documentos 11g)
sys_context('USERENV', 'AUTHENTICATED_IDENTITY')
– La identidad utilizada para la autenticación depende del “MÉTODO DE AUTENTICACIÓN”.
de la documentación:
- Usuario de empresa autenticado por Kerberos: nombre principal de Kerberos
- Usuario externo autenticado por Kerberos: nombre principal de Kerberos; igual que el nombre del esquema
- Usuario empresarial autenticado mediante SSL: el DN en el certificado PKI del usuario
- Usuario externo autenticado mediante SSL: el DN en el certificado PKI del usuario
- Usuario de empresa autenticado con contraseña: apodo; igual que el nombre de inicio de sesión
- Usuario de la base de datos autenticado con contraseña: el nombre de usuario de la base de datos; igual que el nombre del esquema
- Usuario externo autenticado por el sistema operativo: el nombre de usuario del sistema operativo externo
- Usuario externo autenticado por Radius/DCE: el nombre del esquema
- Proxy con DN: Oracle Internet Directory DN del cliente
- Proxy con certificado: certificado DN del cliente
- Proxy con nombre de usuario: nombre de usuario de la base de datos si el cliente es un usuario de la base de datos local; apodo si el cliente es un usuario empresarial.
- SYSDBA/SYSOPER utilizando el archivo de contraseña: nombre de inicio de sesión
- SYSDBA/SYSOPER usando la autenticación del sistema operativo: nombre de usuario del sistema operativo
user pseudo column
– No estoy seguro, según la documentación creo que es como CURRENT_SCHEMA
pero aparentemente es como CURRENT_USER
Hay una nota importante a tener en cuenta al usar el USER
función de PL/SQL. Como he documentado en esta publicación de blog, STANDARD.USER()
se implementa de la siguiente manera:
function USER return varchar2 is
c varchar2(255);
begin
select user into c from sys.dual;
return c;
end;
Entonces, delega en evaluar user
en el motor SQL, lo que conduce a un cambio de contexto oculto de PL/SQL a SQL. Si lo hace con demasiada frecuencia, por ejemplo, desde dentro de un disparador, eso puede resultar bastante dañino en un sistema de producción. Trate de evitar llamar USER()
de PL/SQL, y use sys_context('USERENV', 'SESSION_USER')
en lugar de.
Si sostienes algún titubeo y forma de renovar nuestro escrito puedes realizar un exégesis y con deseo lo leeremos.