Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sự khác biệt giữa USER () và SYS_CONTEXT ('USERENV', 'CURRENT_USER') là gì?

Từ hướng dẫn tại:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#SQLRF51825

CURRENT_USER

Tên của người dùng cơ sở dữ liệu có đặc quyền hiện đang hoạt động. Điều này có thể thay đổi trong suốt thời gian của một phiên để phản ánh chủ sở hữu của bất kỳ đối tượng quyền nào của người xác định đang hoạt động. Khi không có đối tượng quyền của trình định nghĩa nào hoạt động, CURRENT_USER trả về cùng giá trị với SESSION_USER. Khi được sử dụng trực tiếp trong phần nội dung của định nghĩa dạng xem, điều này trả về người dùng đang thực thi con trỏ đang sử dụng dạng xem; nó không tôn trọng các chế độ xem được sử dụng trong con trỏ như là quyền của người định nghĩa.

SESSION_USER

Tên của người dùng cơ sở dữ liệu lúc đăng nhập. Đối với người dùng doanh nghiệp, trả về lược đồ. Đối với người dùng khác, trả về tên người dùng cơ sở dữ liệu. Giá trị này không đổi trong suốt thời gian của phiên.

Vì vậy, có sự khác biệt giữa SESSION_USER và CURRENT_USER đặc biệt là khi CURRENT_USER được sử dụng trong một thủ tục hoặc hàm được lưu trữ.

Tôi phải thừa nhận rằng tôi không biết thuật ngữ "người dùng doanh nghiệp" nghĩa là gì.

Btw:có cái thứ ba:

SESSION_USERID

Định danh của người dùng cơ sở dữ liệu khi đăng nhập.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các cụm đếm SQL Oracle

  2. Tiếp tục Chèn trong Oracle khi ngoại lệ được nâng lên

  3. Làm thế nào để kiểm tra xem tệp có tồn tại trong PL / SQL hay không?

  4. Các hàm số trong Oracle (Danh sách đầy đủ)

  5. Oracle:Cách đếm các hàng rỗng và không rỗng