insert之后需要commit
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),臨澧企業(yè)網(wǎng)站建設(shè),臨澧品牌網(wǎng)站建設(shè),網(wǎng)站定制,臨澧網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,臨澧網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
或者你將工具設(shè)為自動(dòng)提交,如果沒(méi)有設(shè)為自動(dòng)提交,oracle只在內(nèi)存區(qū)保留,關(guān)閉oracle后,當(dāng)然就丟失了。
commit之后,oracle會(huì)寫(xiě)入磁盤(pán),之后再查就不會(huì)丟了。
另外,提醒一句,因?yàn)閛racle是并行多任務(wù)的,如果你執(zhí)行了insert、update之類(lèi)的語(yǔ)句,不做提交的話,很容易造成鎖表,給其他人帶來(lái)影響。
oracle
存儲(chǔ)過(guò)程的基本語(yǔ)法
1.基本結(jié)構(gòu)
CREATE
OR
REPLACE
PROCEDURE
存儲(chǔ)過(guò)程名字
(
參數(shù)1
IN
NUMBER,
參數(shù)2
IN
NUMBER
)
IS
變量1
INTEGER
:=0;
變量2
DATE;
BEGIN
END
存儲(chǔ)過(guò)程名字
2.SELECT
INTO
STATEMENT
將select查詢(xún)的結(jié)果存入到變量中,可以同時(shí)將多個(gè)列存儲(chǔ)多個(gè)變量中,必須有一條
記錄,否則拋出異常(如果沒(méi)有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT
col1,col2
into
變量1,變量2
FROM
typestruct
where
xxx;
EXCEPTION
WHEN
NO_DATA_FOUND
THEN
xxxx;
END;
...
3.IF
判斷
IF
V_TEST=1
THEN
BEGIN
do
something
END;
END
IF;
4.while
循環(huán)
WHILE
V_TEST=1
LOOP
BEGIN
XXXX
END;
END
LOOP;
5.變量賦值
V_TEST
:=
123;
6.用for
in
使用cursor
...
IS
CURSOR
cur
IS
SELECT
*
FROM
xxx;
BEGIN
FOR
cur_result
in
cur
LOOP
BEGIN
V_SUM
:=cur_result.列名1+cur_result.列名2
END;
END
LOOP;
END;
7.帶參數(shù)的cursor
CURSOR
C_USER(C_ID
NUMBER)
IS
SELECT
NAME
FROM
USER
WHERE
TYPEID=C_ID;
OPEN
C_USER(變量值);
LOOP
FETCH
C_USER
INTO
V_NAME;
EXIT
FETCH
C_USER%NOTFOUND;
do
something
END
LOOP;
CLOSE
C_USER;
8.用pl/sql
developer
debug
連接數(shù)據(jù)庫(kù)后建立一個(gè)Test
WINDOW
在窗口輸入調(diào)用SP的代碼,F9開(kāi)始debug,CTRL+N單步調(diào)試
sqlplus 中直接敲入存儲(chǔ)過(guò)程代碼(create or replace procedure ...), / 結(jié)束,
如果代碼沒(méi)有錯(cuò)誤,該過(guò)程就被保存到數(shù)據(jù)庫(kù)中。
可以用 exec 過(guò)程名 運(yùn)行。
如果是plsql developer之類(lèi)的工具,那更簡(jiǎn)單,編輯完存儲(chǔ)過(guò)程后,有運(yùn)行按鈕,點(diǎn)擊即可。
oracle中執(zhí)行了insert、update、delete這三個(gè)DML語(yǔ)句后,結(jié)果在未提交前實(shí)際上是保存在undo空間內(nèi),只有提交之后,才會(huì)真正寫(xiě)入到表中。所以會(huì)發(fā)生你的問(wèn)題。
提交語(yǔ)句:commit
另外,在未做提交前,其他人是無(wú)法select到你處理的數(shù)據(jù)的,看到的是未處理前的數(shù)據(jù)。
還有一點(diǎn)要說(shuō)明,當(dāng)你執(zhí)行了update、delete時(shí),語(yǔ)句所影響的數(shù)據(jù)會(huì)被oracle自動(dòng)鎖定,其他人只能查,而不能update或delete,如果執(zhí)行update或delete,那么就會(huì)產(chǎn)生數(shù)據(jù)庫(kù)鎖。而鎖一旦產(chǎn)生,對(duì)系統(tǒng)的影響會(huì)很大,因此應(yīng)盡快提交。