Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Qual é a diferença entre USER() e SYS_CONTEXT('USERENV','CURRENT_USER')?


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

CURRENT_USER


O nome do usuário do banco de dados cujos privilégios estão ativos no momento. Isso pode mudar durante a duração de uma sessão para refletir o proprietário de qualquer objeto de direitos do definidor ativo. Quando nenhum objeto de direitos do definidor está ativo, CURRENT_USER retorna o mesmo valor que SESSION_USER. Quando usado diretamente no corpo de uma definição de exibição, retorna o usuário que está executando o cursor que está usando a exibição; não respeita as visualizações usadas no cursor como sendo direitos do definidor.

SESSION_USER


O nome do usuário do banco de dados no logon. Para usuários corporativos, retorna o esquema. Para outros usuários, retorna o nome de usuário do banco de dados. Este valor permanece o mesmo durante toda a sessão.

Portanto, uma diferença entre SESSION_USER e CURRENT_USER especialmente quando CURRENT_USER é usado em um procedimento armazenado ou função.

Eu tenho que admitir que não sei o que o termo "usuário corporativo" significa.

Btw:há um terceiro:

SESSION_USERID


O identificador do usuário do banco de dados no logon.