獲取當前會話資訊的方法(二)

yangtingkun發表於2011-06-07

一直以為有兩種方法可以獲取當前會話資訊,最近才發現其中一種已經不再適用。

介紹另一種獲取會話資訊的方法。

獲取當前會話資訊的方法:http://yangtingkun.itpub.net/post/468/512575

 

 

9i開始,透過AUDSID等於SYS_CONTEXT(‘USERENV’, ‘SESSIONID’)來獲取當前會話的SID已經過時了,這在前一篇文章中做了詳細的 說明。

不過Oracle還有一種方法可以直接獲取當前會話的SID,同樣也是利用SYS_CONTEXT的方式:

SQL> SELECT SPID
2 FROM V$SESSION S, V$PROCESS P
3 WHERE S.PADDR = P.ADDR
4 AND SID IN
5 (SELECT SID
6 FROM V$MYSTAT
7 WHERE ROWNUM = 1);

SPID
------------------------
7656

SQL> SELECT SPID
2 FROM V$SESSION S, V$PROCESS P
3 WHERE S.PADDR = P.ADDR
4 AND SID = SYS_CONTEXT('USERENV', 'SID');

SPID
------------------------
7656

這種方法還能簡化,可以直接利用USERENV

SQL> SELECT SPID
2 FROM V$SESSION S, V$PROCESS P
3 WHERE S.PADDR = P.ADDR
4 AND SID = USERENV('SID');

SPID
------------------------
7656

9i開始,SYS_CONTEXT(‘USERENV’, ‘SESSIONID’)的方式已經不再適用,推薦使用SYS_CONTEXT(‘USERENV’, ‘SID’)的方式。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-697344/,如需轉載,請註明出處,否則將追究法律責任。

相關文章