共計(jì) 2027 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
這篇文章主要介紹“怎么使用 PostgreSQL 游標(biāo)”,在日常操作中,相信很多人在怎么使用 PostgreSQL 游標(biāo)問(wèn)題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么使用 PostgreSQL 游標(biāo)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著丸趣 TV 小編一起來(lái)學(xué)習(xí)吧!
一、說(shuō)明
游標(biāo)字面理解就是游動(dòng)的光標(biāo)。
用數(shù)據(jù)庫(kù)語(yǔ)言來(lái)描述:游標(biāo)是映射在結(jié)果集中一行數(shù)據(jù)上的位置實(shí)體,有了游標(biāo)用戶就可以訪問(wèn)結(jié)果集中的任意一行數(shù)據(jù)了,將游標(biāo)放置到某行后,即可對(duì)該行數(shù)據(jù)進(jìn)行操作,例如提取當(dāng)前行的數(shù)據(jù)等等。
二、分類(lèi)
顯式游標(biāo)
用 CURSOR…IS 命令定義的游標(biāo),它可以對(duì)查詢語(yǔ)句 (SELECT) 返回的多條記錄進(jìn)行處理。
隱式游標(biāo)
是在執(zhí)行插入 (INSERT)、刪除(DELETE)、修改(UPDATE) 和返回單條記錄的查詢 (SELECT) 語(yǔ)句時(shí)有 PL/SQL 自動(dòng)定義的。
三、屬性
Oracle 游標(biāo)有 4 個(gè)屬性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT
%ISOPEN 判斷游標(biāo)是否被打開(kāi),如果打開(kāi) %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;
打開(kāi)游標(biāo)
open emp_info;
讀取游標(biāo)
fetch mycur into varno,varprice;
關(guān)閉游標(biāo)
close emp_info;
五、顯示游標(biāo)遍歷
方法一
DECLARE
V_EMP_INFO EMP%ROWTYPE;
CURSOR EMP_INFO IS
SELECT * FROM EMP; --1、聲明游標(biāo)
BEGIN
OPEN EMP_INFO; --2、打開(kāi)游標(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、打開(kāi)游標(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)
/
方法三
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;
/
六、隱式游標(biāo)處理
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)知識(shí),請(qǐng)繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!