? ? 1.什么事存儲過程,使用存儲過程的好處
? ? ? ? ? ? 存儲過程(Stored Procedure) 是一種為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定的存儲過程的名字并給參數(shù)(如果存儲過程中帶有參數(shù))來執(zhí)行它,存儲過程是數(shù)據(jù)庫中的一個(gè)重要對象,任何一個(gè)設(shè)計(jì)良好的數(shù)據(jù)庫應(yīng)用程序,都因該寫到存儲過程
? ? ? ? 優(yōu)點(diǎn):
? ? ? ? 1.允許模塊化程序設(shè)計(jì),就是說只需要創(chuàng)建一次過程,以后程序中就可以調(diào)用該過程任意此
? ? ? ? 2.允許更快執(zhí)行,如果某操作需要執(zhí)行大量的SQL語句或重復(fù)執(zhí)行,存儲過程比SQL語句執(zhí)行的要快。
????????3.減少網(wǎng)絡(luò)流量,例如一個(gè)需要數(shù)百行的SQL代碼的操作有一條執(zhí)行語句完成,不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼
????????4.更好的安全機(jī)制,對于沒有權(quán)限執(zhí)行存儲過程的用戶,也可授權(quán)他們執(zhí)行存儲過程 ? ?
? ? 2.如何使用Oracle 游標(biāo)
? ? ? ? 1.Oracle中游標(biāo)分為顯示游標(biāo)和隱式游標(biāo)
????????2.顯示游標(biāo)是用cursor 。。。is 命令定義的游標(biāo),它可以對查詢語句(Select) 返回的多條記錄進(jìn)行處理
????????3.隱式游標(biāo)是在執(zhí)行插入(insert)刪除,修改,和返回單條記錄的查詢語句時(shí)由PL/SQL自動定義
? ? ? ? 4.顯示有標(biāo)的操作:打開游標(biāo),操作游標(biāo),關(guān)閉游標(biāo),PL/SQL 隱式的地打開SQL游標(biāo),并在它內(nèi)部處理SQL語句,然后關(guān)閉
?? 3.Orale中字符串用什么連接
? ? ? ?? Oracle 中使用||這個(gè)符號連接字符串,
4.Oracle如何進(jìn)行分頁查詢
? ? ? ? Oracle中使用rownum來進(jìn)行分頁,這個(gè)效率最好的分頁方法,Hibernate也是使用rownum來進(jìn)行Oracle分頁
5.存儲過程和存儲函數(shù)的特點(diǎn)和區(qū)別
? ? 特點(diǎn):
? ? ? ? 一般來說。存儲過程實(shí)現(xiàn)的功能要復(fù)雜,而函數(shù)的實(shí)現(xiàn)的功能針對性比較強(qiáng)
? ? ? ? ? ? 對于存儲過程來說可以返回參數(shù),而函數(shù)只能返回值或者表的對象
? ? ? ? ? ? 存儲過程一般是作為一個(gè)獨(dú)立的部分來執(zhí)行,而函數(shù)可以作為查詢語句的一個(gè)部分來調(diào)用,由于函數(shù)可以返回一個(gè)表對象
? ? ? ? ? ? 因此它可以查詢語句中位于From關(guān)鍵字的后面
? ? ? ? 函數(shù)必須有返回值,而過程沒有
? ? ? ? 函數(shù)可以單獨(dú)執(zhí)行,而過程必須通過execute執(zhí)行
? ? ? ? 函數(shù)可以嵌入到SQL語句中執(zhí)行,而過程不行
6.你覺得存儲過程和SQL語句使用該使用那個(gè)
? ? ? ? 1.在一些高效率或者規(guī)范性要求高的項(xiàng)目,建議采用存儲過程
? ? ? ? 2.對于一般項(xiàng)目建議采用參數(shù)化命令方式,是存儲過程SQL語句一種折中的方式
? ? ? ? 3.對于一些算法要求較高,涉及多條數(shù)據(jù)邏輯,建議采用存儲過程
7.觸發(fā)器的作用有哪些
? ? ? 1. 觸發(fā)器通過數(shù)據(jù)庫中的相關(guān)表實(shí)現(xiàn)級聯(lián)關(guān)系,通過級聯(lián)引用完整性約束,可以更有效的執(zhí)行這些更改,
? ? 2.觸發(fā)器可以強(qiáng)制比用CHECK約束更為復(fù)雜,與CHECK約束不同,觸發(fā)器可以引用其它表中的列。
? ? 3.觸發(fā)器還可以強(qiáng)制執(zhí)行業(yè)務(wù)邏輯
? ? 4.觸發(fā)器也可以評估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對策
????