?? 第六章 pl-sql與oracle間交互 - pl-sql用戶指南與參考 - whatiswhat.htm
字號(hào):
Linux <FONT face="Wingdings 3">}</FONT></A>
<UL class=ul2>
<LI><A
href="http://blog.chinaunix.net/u1/44734/article_83906.html">· VIM<!-- a83906 --></A><!-- 83906 --> </LI></UL>
<LI><A href="http://blog.chinaunix.net/u1/44734/article_62689.html">·
雜談<!-- a62689 --></A><!-- 62689 -->
<LI><A href="http://blog.chinaunix.net/u1/44734/article_89165.html">·
Windows<!-- a89165 --></A><!-- 89165 --> </LI></UL></LI>
<LI class=ul0><A class=list1
href="http://blog.chinaunix.net/u1/44734/index.html">首頁</A> </LI></UL></TD>
<TD width=10></TD></TR>
<TR>
<TD colSpan=4>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width=980 border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<SCRIPT language=javascript>function $(s){return document.getElementById(s);}function ShowHideDiv(divid,iImg){if($(divid).style.display == "none"){iImg.src="../../templates/newgreen/images/dot2.gif";$(divid).style.display = "block";iImg.title="收起";}else{iImg.src="../../templates/newgreen/images/dot4.gif";$(divid).style.display = "none";iImg.title="展開";}}navHover();</SCRIPT>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=3></TD></TR></TBODY></TABLE><BR>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TD width=18 height=28><IMG alt=""
src="第六章 PL-SQL與Oracle間交互 - PL-SQL用戶指南與參考 - whatiswhat.files/bg_art_left_top.gif"
border=0></TD>
<TD
background="第六章 PL-SQL與Oracle間交互 - PL-SQL用戶指南與參考 - whatiswhat.files/bg_art_top.gif">
<P style="MARGIN: 5px; LINE-HEIGHT: 150%"></P></TD>
<TD width=18 height=28><IMG alt=""
src="第六章 PL-SQL與Oracle間交互 - PL-SQL用戶指南與參考 - whatiswhat.files/bg_art_right_top.gif"
border=0></TD></TR>
<TR>
<TD width=18
background="第六章 PL-SQL與Oracle間交互 - PL-SQL用戶指南與參考 - whatiswhat.files/bg_art_left.gif"></TD>
<TD align=middle bgColor=#f5fdee><BR><FONT style="FONT-SIZE: 14pt"
color=#295200><B>第六章 PL/SQL與Oracle間交互</B></FONT>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1
cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD align=middle>
<TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle>
<TABLE
style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV id=art style="MARGIN: 15px">
<CENTER><IMG alt=""
src="第六章 PL-SQL與Oracle間交互 - PL-SQL用戶指南與參考 - whatiswhat.files/o_cover.jpg"><BR><IMG
alt=""
src="第六章 PL-SQL與Oracle間交互 - PL-SQL用戶指南與參考 - whatiswhat.files/o_banner.gif">
</CENTER>
<DIV id=chapter>第六章 PL/SQL與Oracle間交互</DIV><!-- InstanceEndEditable --><!-- InstanceBeginEditable name="EditRegion2" -->
<DIV id=text>
<P class=title1>一、PL/SQL支持的SQL一覽</P>
<P>PL/SQL擴(kuò)展了SQL,變得更加強(qiáng)大和易用。我們可以用PL/SQL靈活安全地操作Oracle數(shù)據(jù),因?yàn)樗С炙械腟QL數(shù)據(jù)操作語句(除了EXPLAIN
PLAN),事務(wù)控制語句,函數(shù),偽列和操作符。PL/SQL還支持動(dòng)態(tài)SQL,能讓我們動(dòng)態(tài)地執(zhí)行SQL數(shù)據(jù)定義,數(shù)據(jù)控制和會(huì)話控制語句。除此之外,
PL/SQL還遵循ANSI/ISO的SQL標(biāo)準(zhǔn)。 </P>
<P class=title2>1、數(shù)據(jù)操作</P>
<P>我們可以使用INSERT、UPDATE、DELETE、SELECT和LOCK
TABLE來操作Oracle數(shù)據(jù)。INSERT用于向數(shù)據(jù)表中插入新行;UPDATE能修改行;DELETE可以刪除不需要的行;SELECT可以按照我們給定的查詢標(biāo)準(zhǔn)檢索出滿足條件的行;LOCK
TABLE可以臨時(shí)限制對(duì)一個(gè)數(shù)據(jù)表的訪問。 </P>
<P class=title2>2、事務(wù)控制</P>
<P>Oracle是面向事務(wù)的,它使用事務(wù)來保證數(shù)據(jù)的完整性。數(shù)據(jù)庫事務(wù)是指作為單個(gè)邏輯工作單元執(zhí)行的一系列SQL操作。</P>
<P>同時(shí),Oracle還可以通過事務(wù)將我們的操作持久化或取消。如果我們的程序在事務(wù)中有一步執(zhí)行失敗,Oracle就會(huì)發(fā)現(xiàn)錯(cuò)誤并回滾整個(gè)事務(wù)。這樣,數(shù)據(jù)庫就會(huì)自動(dòng)恢復(fù)到先前的狀態(tài)。
</P>
<P>我們可以使用COMMIT、ROLLBACK、SAVEPOINT和SET
TRANSACTION命令來控制事務(wù)。COMMIT會(huì)提交事務(wù),將數(shù)據(jù)庫的變化永久性地提交;ROLLBACK會(huì)終止當(dāng)前事務(wù),并放棄自事務(wù)開啟后所有發(fā)生變化的內(nèi)容;SAVEPOINT能夠標(biāo)記當(dāng)前事務(wù)的處理進(jìn)度;一并使用ROLLBACK和SAVEPOINT就可以回滾部分事務(wù)。SET
TRANSACTION可以設(shè)置事務(wù)的屬性,如讀寫訪問和隔離級(jí)別。 </P>
<P class=title2>3、SQL函數(shù)</P>
<P>PL/SQL能讓我們使用所有的SQL聚合函數(shù):AVG、COUNT、GROUPING、MAX、MIN、STDDEV、SUM和VARIANCE。除了COUNT(*)之外,所有的聚合函數(shù)都會(huì)忽略空值。</P>
<P>我們可以在SQL語句中使用聚合函數(shù),但不能在過程化語句中使用。聚合函數(shù)會(huì)作用于整個(gè)字段,除非我們使用SELECT
GROUP BY語句對(duì)返回的結(jié)果行進(jìn)行分組排序。如果我們忽略GROUP
BY子句,聚合函數(shù)就會(huì)把所有的結(jié)果行當(dāng)作一個(gè)整體來處理。我們可以使用下面的語法來調(diào)用聚合函數(shù):</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap>function_name([<STRONG>ALL</STRONG> | <STRONG>DISTINCT</STRONG>] expression)
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>expression會(huì)引用一個(gè)或多個(gè)數(shù)據(jù)庫字段。如果我們指定ALL(默認(rèn)的),聚合函數(shù)就會(huì)考慮所有的行,也包括重復(fù)的行內(nèi)容。如果我們指定的是DISTINCT,聚合函數(shù)只會(huì)考慮有區(qū)別的值。例如,下面的語句只返回?cái)?shù)據(jù)表emp中不同的職別的個(gè)數(shù):</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>SELECT</STRONG> COUNT(<STRONG>DISTINCT</STRONG> job) <STRONG>INTO</STRONG> job_count <STRONG>FROM</STRONG> emp;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>函數(shù)COUNT可以讓我們使用星號(hào)(*)操作符返回一個(gè)數(shù)據(jù)表中行的個(gè)數(shù)。例如,下面的語句返回表emp中行的個(gè)數(shù):</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>SELECT</STRONG> COUNT(*) <STRONG>INTO</STRONG> emp_count <STRONG>FROM</STRONG> emp;
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>如果使用默認(rèn)的ALL,聚合函數(shù)會(huì)考慮所有的列值,包括重復(fù)項(xiàng);如果改換DISTINCT的話,聚合函數(shù)就只會(huì)考慮重復(fù)項(xiàng)中的一個(gè)值。
</P>
<P class=title2>4、SQL偽列</P>
<P>PL/SQL可以辨識(shí)CURRVAL、LEVEL、NEXTVAL、ROWID和ROWNUM這樣能返回特殊的數(shù)據(jù)項(xiàng)的SQL偽列。偽列并不是真實(shí)存在于數(shù)據(jù)表中的字段,但它們的行為看起來跟真實(shí)字段一樣。例如,我們?cè)诓樵儠r(shí)就可以選取偽列。但是,我們不允許在SQL語句中向偽列中插入值。偽列只能在SQL語句中使用,不能用在過程化語句中。
</P>
<UL>
<LI>CURRVAL and NEXTVAL </LI></UL>
<P>序列(sequence)是一個(gè)能產(chǎn)生順序編號(hào)的模式對(duì)象。創(chuàng)建序列時(shí),我們可以指定它的初始值和增量值。CURRVAL能返回指定序列的當(dāng)前值。</P>
<P>在使用序列前,我們必須先調(diào)用NEXTVAL,NEXTVAL的作用是生成并返回序列的下一個(gè)順序值。想要得到序列中的當(dāng)前值或是下一個(gè)值,我們必須使用點(diǎn)標(biāo)志,方法如下:</P>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -