本篇內(nèi)容介紹了“Oracle的靜態(tài)游標(biāo)與動(dòng)態(tài)游標(biāo)區(qū)別是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!專注中小微企業(yè)官網(wǎng)定制,成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
前言
我們?cè)趯慜racle的存儲(chǔ)過程里面,經(jīng)常會(huì)用到游標(biāo),Oracle里面的游標(biāo)分為靜態(tài)游標(biāo)和動(dòng)態(tài)游標(biāo)。今天我們?cè)谡f一下分別有什么不同。
靜態(tài)游標(biāo)和動(dòng)態(tài)游標(biāo)的概念
靜態(tài)游標(biāo)
顯式游標(biāo)和隱式游標(biāo)稱為靜態(tài)游標(biāo),因?yàn)樵谑褂盟麄冎?,游?biāo)的定義已經(jīng)完成,不能再更改。
定義:
Cursor 游標(biāo)名(參數(shù)1,參數(shù)2......) is 查詢語句
調(diào)用時(shí):
for 變量行 in 游標(biāo)名 loop
end loop;
動(dòng)態(tài)游標(biāo)
游標(biāo)在聲明時(shí)沒有設(shè)定,在打開時(shí)可以對(duì)其進(jìn)行修改。
定義:
TYPE 游標(biāo)別名 IS REF CURSOR;
游標(biāo)名 游標(biāo)別名;
調(diào)用時(shí):
open 游標(biāo)名 for 動(dòng)態(tài)SQL語句;
loop
exit when 游標(biāo)名%NOTFOUND;
fetch 游標(biāo)名
into 變量1,變量2,變量3,變量4;
相對(duì)來說靜態(tài)游標(biāo)在存儲(chǔ)過程中用到的會(huì)比較多,而動(dòng)態(tài)游標(biāo)相對(duì)較少,像我們?nèi)绻嬖诜指畋淼臅r(shí)候,取數(shù)據(jù)時(shí)就會(huì)用到動(dòng)態(tài)游標(biāo)了。
代碼演示
使用背景
我們?cè)诖鎯?chǔ)過程中輸入開始和結(jié)束日期,用于查詢開始到結(jié)束日期這一段時(shí)間內(nèi)的銷售。
解決思路
這個(gè)查詢我們就可以用到靜態(tài)游標(biāo)和動(dòng)態(tài)游標(biāo)的結(jié)合使用。
通過靜態(tài)游標(biāo)設(shè)置開始和結(jié)果日期獲取到所涉及到的當(dāng)前年月。
根據(jù)獲取到的當(dāng)前年月生成要查詢對(duì)應(yīng)的月份分割表的動(dòng)態(tài)SQL語句。
用動(dòng)態(tài)游標(biāo)遍歷,然后進(jìn)行數(shù)據(jù)的處理。
代碼
上面是定義和靜態(tài)游標(biāo)和動(dòng)態(tài)游標(biāo),下面的靜態(tài)游標(biāo)的寫法,是根據(jù)輸入的開始和結(jié)束日期獲取對(duì)應(yīng)的當(dāng)前年月
即如果輸入了2018-06-01----2018-08-30
游標(biāo)顯示結(jié)果為
201806
201807
201808
根據(jù)輸入的日期通過靜態(tài)游標(biāo)生成對(duì)應(yīng)的動(dòng)態(tài)SQL語句。vs_sSql是我們的動(dòng)態(tài)字符串,把主表查詢先加進(jìn)來,然后根據(jù)輸入的開始和結(jié)束日期找到對(duì)應(yīng)的月份分割表,然后判斷表是否存在,如果存在的話就用union all把分割表加入到動(dòng)態(tài)SQL語句里
通過動(dòng)態(tài)sql語句使用動(dòng)態(tài)游標(biāo)遍歷銷售進(jìn)行數(shù)據(jù)的更新。
“Oracle的靜態(tài)游標(biāo)與動(dòng)態(tài)游標(biāo)區(qū)別是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!