您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用PostgreSQL游標(biāo)”,在日常操作中,相信很多人在怎么使用PostgreSQL游標(biāo)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用PostgreSQL游標(biāo)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
游標(biāo)字面理解就是游動的光標(biāo)。
用數(shù)據(jù)庫語言來描述:游標(biāo)是映射在結(jié)果集中一行數(shù)據(jù)上的位置實(shí)體,有了游標(biāo)用戶就可以訪問結(jié)果集中的任意一行數(shù)據(jù)了,將游標(biāo)放置到某行后,即可對該行數(shù)據(jù)進(jìn)行操作,例如提取當(dāng)前行的數(shù)據(jù)等等。
顯式游標(biāo)
用CURSOR...IS 命令定義的游標(biāo),它可以對查詢語句(SELECT)返回的多條記錄進(jìn)行處理。
隱式游標(biāo)
是在執(zhí)行插入(INSERT)、刪除(DELETE)、修改(UPDATE)和返回單條記錄的查詢(SELECT)語句時有PL/SQL自動定義的。
Oracle 游標(biāo)有4個屬性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT
%ISOPEN 判斷游標(biāo)是否被打開,如果打開%ISOPEN 等于true,否則等于false
%FOUND %NOTFOUND 判斷游標(biāo)所在的行是否有效,如果有效,則%FOUNDD等于true,否則等于false
%ROWCOUNT 返回當(dāng)前位置為止游標(biāo)讀取的記錄行數(shù)。
聲明游標(biāo)
CURSOR emp_info(vartype number) is select * from emp;
打開游標(biāo)
open emp_info;
讀取游標(biāo)
fetch mycur into varno,varprice;
關(guān)閉游標(biāo)
close emp_info;
方法一
DECLARE V_EMP_INFO EMP%ROWTYPE; CURSOR EMP_INFO IS SELECT * FROM EMP; --1、聲明游標(biāo) BEGIN OPEN EMP_INFO; --2、打開游標(biāo),傳遞參數(shù)值 LOOP FETCH EMP_INFO INTO V_EMP_INFO; --3、提取游標(biāo)fetch into IF EMP_INFO%FOUND THEN DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的雇傭日期是' || V_EMP_INFO.HIREDATE); ELSE DBMS_OUTPUT.PUT_LINE('已經(jīng)處理完結(jié)果集了'); EXIT; END IF; END LOOP; CLOSE EMP_INFO; --4、關(guān)閉游標(biāo) END;
方法二
DECLARE V_EMP_INFO EMP%ROWTYPE; CURSOR EMP_INFO IS SELECT * FROM EMP; --1、聲明游標(biāo) BEGIN OPEN EMP_INFO; --2、打開游標(biāo),傳遞參數(shù)值 LOOP FETCH EMP_INFO INTO V_EMP_INFO; --3、提取游標(biāo)fetch into EXIT WHEN EMP_INFO%NOTFOUND; DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的雇傭日期是' || V_EMP_INFO.HIREDATE); END LOOP; DBMS_OUTPUT.PUT_LINE('已經(jīng)處理完結(jié)果集了'); CLOSE EMP_INFO; --4、關(guān)閉游標(biāo) END; /
方法三
DECLARE V_EMP_INFO EMP%ROWTYPE; CURSOR EMP_INFO IS SELECT * FROM EMP; --1、聲明游標(biāo) BEGIN FOR V_EMP_INFO IN EMP_INFO LOOP DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的雇傭日期是' || V_EMP_INFO.HIREDATE); END LOOP; DBMS_OUTPUT.PUT_LINE('已經(jīng)處理完結(jié)果集了'); END; /
DECLARE V_EMP_INFO EMP%ROWTYPE; BEGIN SELECT * INTO V_EMP_INFO FROM EMP WHERE ename='SMITH'; IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE(V_EMP_INFO.ENAME || '的雇傭日期是' || V_EMP_INFO.HIREDATE); END IF; DBMS_OUTPUT.PUT_LINE('已經(jīng)處理完結(jié)果集了'); END; /
到此,關(guān)于“怎么使用PostgreSQL游標(biāo)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。