sql >> データベース >  >> RDS >> Oracle

USER()とSYS_CONTEXT('USERENV'、'CURRENT_USER')の違いは何ですか?

    マニュアルから:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#SQLRF51825

    CURRENT_USER

    特権が現在アクティブになっているデータベースユーザーの名前。これは、アクティブな定義者の権利オブジェクトの所有者を反映するために、セッションの期間中に変更される場合があります。アクティブな定義者の権限オブジェクトがない場合、CURRENT_USERはSESSION_USERと同じ値を返します。ビュー定義の本体で直接使用すると、ビューを使用しているカーソルを実行しているユーザーが返されます。カーソルで使用されているビューが定義者の権利であるとは見なされません。

    SESSION_USER

    ログオン時のデータベースユーザーの名前。エンタープライズユーザーの場合、スキーマを返します。他のユーザーの場合は、データベースのユーザー名を返します。この値は、セッションの期間中は同じままです。

    つまり、あります SESSION_USERとCURRENT_USERの違い、特にCURRENT_USERがストアドプロシージャまたは関数で使用されている場合。

    ただし、「エンタープライズユーザー」という用語が何を意味するのかわからないことを認めなければなりません。

    ところで:3つ目があります:

    SESSION_USERID

    ログオン時のデータベースユーザーの識別子。



    1. PL / SQLで文字列を分割する方法は?

    2. rake db:create throws database doesnotexistエラーwithpostgresql

    3. SQL Serverエラー7222:「このインスタンスではSQLServerプロバイダーのみが許可されています」

    4. SQL DROP TABLE構文–DBMSによってリストされます