oracle如何獲取id,oracle如何獲取表自增后的id

如何取得Oracle當前會話的ID

查看當前會話的session ID 有如下三種方法:

創新互聯長期為成百上千客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為云縣企業提供專業的網站建設、成都網站建設,云縣網站改版等技術服務。擁有十多年豐富建站經驗和眾多成功案例,為您定制開發。

1. v$mystat視圖

SQL select sid from v$mystat where rownum=1;

SID

----------

1152

2. 使用userenv(‘sid’) 直接獲取

這種方法只能在oracle 10g以后可以使用。

SQL select userenv('sid') from dual;

USERENV('SID')

--------------

1152

3. 結合 userenv('sessionid') 與 v$session 視圖

userenv('sessionid') 返回的是session audit id.其對應v$session 的audsid字段。

在session 連接到數據庫的時候,會從SYS.AUDSES$序列中獲取一個audid 分配給session。

SQL select sid from v$session where audsid=userenv('sessionid');

SID

----------

773

1152

--這里返回了2個值,直接查看userenv('sessionid') 值:

SQL select userenv('sessionid') from dual;

USERENV('SESSIONID')

--------------------

4294967295

對于internal用戶(’/as sysoper’ 和 ‘/as sysdba’)和后臺進程,其對應的AUDID 為0.

在Oracle 10g中,如果AUDID的值為0,表明是internal 用戶,如果AUDID 值是4294967295,那么就表明是用SYS 用戶直接連接的。

這里返回三個結果是把所有SYS 用戶的session都返回了,所以這種方法有時的準確性并不高。

如何在java中獲取Oracle里獲取自增ID 在線等

public class SeqManager {

protected String dataSource = "java:/OracleDS";

public SeqManager() {

}

/**

* 從數據庫連接中取的一連接

*

* @param String dataSource 為數據源JNDI

*

*

* 返回值為數據庫連接

*

*/

protected Connection getConnection(String dataSource)

{

Connection con = null;

try

{

InitialContext ic = new InitialContext();

DataSource ds = (DataSource) ic.lookup(dataSource);

con = ds.getConnection();

System.out.println("connection is :" + con);

// con.setAutoCommit(false);

} catch(NamingException e)

{

String err = "連接數據庫時出錯:找不到JNDI名稱" + dataSource;

System.out.println(e);

e.printStackTrace();

} catch (SQLException ex)

{

String err = "連接數據庫時出錯:創建不了數據庫連接";

System.out.println(ex);

ex.printStackTrace();

}

return con;

}

/**

* 取Sequence的公共方法

*

* @param String sql 為傳進的SQL語句

*

*

* 返回值為Sequence值

*

*/

protected Long getNextValOfSeq(String sql) throws SQLException

{

Connection con = getConnection(dataSource);

PreparedStatement pst = con.prepareStatement(sql);

ResultSet rs = pst.executeQuery();

try

{

if (rs.next()) {

return new Long(rs.getLong(1));

}

else {

return null;

}

}catch(SQLException e)

{

throw e;

}finally

{

rs.close();

pst.close();

con.close();

}

}

public Long getNextValOfStudEntrScore() throws SQLException

{

String sql = " Select SeqStudEntrScore.NextVal From Dual ";

try

{

return getNextValOfSeq(sql);

}catch (SQLException e)

{

String errorMessage = "取***Sequence時出錯.";

e.printStackTrace();

throw new SQLException(errorMessage);

}

}

}

在jsp里調用這個javaBeanjsp就是一個servlet操作數據庫沒什么區別

Oracle怎么得到剛剛新插入數據庫那條記錄的id

如果是plsql代碼塊,使用returning into 結果集,獲取id;

如果是單獨sql語句,若id是序列可用序列名.currval獲取id值,但是出現并發情況可能獲取有誤;若非序列,需根據業務情況編寫sql獲取。

以上。

oracle 中如何獲得一段SQL的進程ID

執行下列命令語句

sqlplus / as sysdba EOF

create tablespace test datafile '/data/test01.dbf' size 10240M;

quit;

EOF

通過ps -ef|grep sqlplus命令得到上面所執行的命令的進程id為:12345

(1)關于v$process

執行下面的SQL是查不到相關的信息:

select * from v$process where spid='12345';

因為這個spid字段對應的并不是我們用ps命令從系統中查詢到的進程id,而是這個進程執行的當前SQL的進程id,

也就是上面命令中的“create tablespace test datafile '/data/test01.dbf' size 10240M;”所對應的進程id,如果想

通過用ps命令從系統中查詢到的進程id查看對應的信息,那么必須使用下面語句:

select spid,sid,process,sql_address from v$session where process='12345'

上面sql中的process就是通過ps查看的進程id,而spid就是里面的sql語句所對應的進程id。

還可以通過上面的sql_address 查看正在執行的SQL語句內容:

select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';

如何獲取session中的id

session即會話,是oracle中的概念,可用如下幾個方法:

方法一:

1、登錄oracle客戶端,如plsql(登錄用戶需要有dba權限)。

2、運行如下語句,顯示的就是當前的session id。

1

SELECT USERENV('SID') FROM DUAL;

方法二:

1、登錄oracle客戶端,如plsql(登錄用戶需要有dba權限)。

2、運行如下語句,顯示的就是當前的session id。

1

SELECT SID FROM V$MYSTAT WHERE ROWNUM =1;

oracle怎么在生成id時獲取id

 一、主鍵id自增

oracle 中不能設置自動增加,這個和其他數據庫不一樣,但是有 序列,這個是Oracle自己特有的東西,

1、首先創建序列:create sequence seq;

語法:

CREATE SEQUENCE 序列名

[INCREMENT BY n] --每次加幾

[START WITH n] --序列從幾開始

[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --小值、大值限制

比CREATE SEQUENCE seq start with 1 increment by 1; --建立了額從1開始每次加1序列

訪問序列時用 序列名稱.nextval語法

這就創建好了,然后 seq.nextval 就會返回一個值,不會重復的值,

insert into tablename values(seq.nextval,'test');

insert into tablename values(seq.nextval,'test');

insert into tablename values(seq.nextval,'test');

這樣前3個id 分別是 1,2,3

當前文章:oracle如何獲取id,oracle如何獲取表自增后的id
標題鏈接:http://m.kartarina.com/article10/hddido.html

成都網站建設公司_創新互聯,為您提供網站內鏈動態網站商城網站網頁設計公司關鍵詞優化Google

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營
主站蜘蛛池模板: 精品少妇无码AV无码专区| 无码人妻精品中文字幕免费东京热| 无码国产69精品久久久久网站| 精品三级AV无码一区| 精品久久无码中文字幕| 无码中文字幕色专区| 少妇无码一区二区三区免费| 性色AV一区二区三区无码| 国产亚洲?V无码?V男人的天堂 | 无码人妻精品一区二区三区9厂 | 五月丁香六月综合缴清无码| 日韩AV无码久久一区二区| 亚洲av永久无码精品古装片| 国产成人无码网站| 国产成人无码精品一区不卡| 亚洲AV无码成人专区片在线观看| 亚洲V无码一区二区三区四区观看| 亚洲私人无码综合久久网| 亚洲一区AV无码少妇电影| a级毛片无码免费真人久久| 一本色道无码道DVD在线观看| 中文字幕无码免费久久| 日本爆乳j罩杯无码视频| 无码人妻丰满熟妇区五十路| 亚洲av无码兔费综合| 亚洲av无码国产精品色午夜字幕 | 亚洲另类无码专区首页| 亚洲国产精品无码久久久不卡 | 在线精品无码字幕无码AV| 加勒比无码一区二区三区| 亚洲看片无码在线视频| 免费A级毛片无码专区| 久久久久久久无码高潮| 亚洲AV综合色区无码另类小说 | 无码人妻一区二区三区在线视频| 国产精品毛片无码| 久久老子午夜精品无码怎么打| 成人无码午夜在线观看| 精品人妻少妇嫩草AV无码专区| 日韩专区无码人妻| 亚洲精品无码专区久久久|