日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL游标的小知识

發(fā)布時間:2023/12/10 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL游标的小知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、游標(biāo)(用來存儲多條查詢數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)(結(jié)果集),它有一個指針,用來從上往下移動,從而達(dá)到遍歷每條記錄的作用)

? ? ? 游標(biāo)也可以理解為逐行返回SQL語句的結(jié)果集

?

如何編寫一個游標(biāo)?

1、聲明游標(biāo)

declare cursor cur_name

  is + 想要進(jìn)行的操作;

  定義數(shù)據(jù)的方式type/rowtype;

2、打開游標(biāo)

open cur_name;

3、提取數(shù)據(jù)

fetch?

4、關(guān)閉游標(biāo)

eg:提取t_emp中的數(shù)據(jù)

declaer cursor cur?

  is select * from t_emp;

  r_emp t_emp%rowtype;

begin

  open cur;

  fetch cur into r_emp;

  dbms_output.put_line('id:'||r_emp.id);

  close;

end;

5.釋放游標(biāo)

?Deallocate ??cur_name

如何判斷是否到了結(jié)果集的尾部,

oracle中,對于游標(biāo)的屬性,它通過屬性值來判斷的

1)%notfound?到了游標(biāo)尾部,沒有記錄了,就返回true?

2)%found?用于檢驗(yàn)游標(biāo)是否成功,通常在fetch語句前使用,當(dāng)游標(biāo)按照條件查詢一條記錄是,返回true?

3)%isopen?判斷游標(biāo)是否打開

4)rowcount?獲得影響的行數(shù)

二、游標(biāo)的分類:

1、靜態(tài)游標(biāo) 在執(zhí)行前,明確知道sql語句游標(biāo)?
a) 顯示游標(biāo)

用戶自己寫的sql語句,編譯時能明確知道sql語句?
b) 隱式游標(biāo)?
Dml(增、刪、改、查詢單條記錄)會用隱式游標(biāo),該變量名不需要用戶自己聲明,
它由系統(tǒng)幫我們定義,叫sql。?
影視游標(biāo)的使用:通過%rowcour判斷是有使用了。 使用時不要字機(jī)定義應(yīng)是游標(biāo),它由系統(tǒng)定義?
2、動態(tài)游標(biāo) 在執(zhí)行前不知道sql語句游標(biāo),執(zhí)行時才知道sql語句的游標(biāo)。?
a) 強(qiáng)類型游標(biāo)?
b) 弱類型游標(biāo)

三、游標(biāo)的作用:(拿出結(jié)果集中的一行)

游標(biāo)是映射在結(jié)果集中一行數(shù)據(jù)上的位置實(shí)體,有了游標(biāo),用戶就可以訪問結(jié)果集中的任意一行數(shù)據(jù)了,
將游標(biāo)放置到某行后,即可對該行數(shù)據(jù)進(jìn)行操作,例如提取當(dāng)前行的數(shù)據(jù)等。

游標(biāo)實(shí)際上是一種能從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機(jī)制。游標(biāo)充當(dāng)指針的作用。
盡管游標(biāo)能遍歷結(jié)果中的所有行,但他一次只指向一行。

概括來講,SQL的游標(biāo)是一種臨時的數(shù)據(jù)庫對象,即可以用來存放在數(shù)據(jù)庫表中的數(shù)據(jù)行副本,也可以指向存儲在數(shù)據(jù)庫中的數(shù)據(jù)行的指針。
游標(biāo)提供了在逐行的基礎(chǔ)上操作表中數(shù)據(jù)的方法。

游標(biāo)的一個常見用途就是保存查詢結(jié)果,以便以后使用。游標(biāo)的結(jié)果集是由SELECT語句產(chǎn)生,如果處理過程需要重復(fù)使用一個記錄集,
那么創(chuàng)建一次游標(biāo)而重復(fù)使用若干次,比重復(fù)查詢數(shù)據(jù)庫要快的多。
四,對于游標(biāo)的的優(yōu)化建議
  • ??? ?如果能不用游標(biāo),盡量不要使用游標(biāo)

  • ???? 用完用完之后一定要關(guān)閉和釋放

  • ???? 盡量不要在大量數(shù)據(jù)上定義游標(biāo)

  • ???? 盡量不要使用游標(biāo)上更新數(shù)據(jù)

  • ???? 盡量不要使用insensitive, static和keyset這些參數(shù)定義游標(biāo)

  • ???? 如果可以,盡量使用FAST_FORWARD關(guān)鍵字定義游標(biāo)

  • ???? 如果只對數(shù)據(jù)進(jìn)行讀取,當(dāng)讀取時只用到FETCH NEXT選項(xiàng),則最好使用FORWARD_ONLY參數(shù)?


總結(jié)

以上是生活随笔為你收集整理的SQL游标的小知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。