PLSQL

PL / SQL遊標

PL / SQL遊標

遊標是一個指針,在上下文區域。PL / SQL通過光標控製上下文區域。遊標的行可能會返回的一個或多個SQL語句。這些設置的行;光標將被稱為活動。有兩種類型的遊標:

  1. 隱式遊標

這些遊標是自動創建的Oracle,每當有一個沒有顯式遊標的語句。隱式遊標並不是由程序員控製。當有一個DML語句。、插入、更新、刪除,一個隱式遊標的語句。有不同類型的隱式遊標可用屬性,它們是:

  1. %發現——這個屬性返回true,如果插入、刪除和更新語句是受一個或多個行或如果select into語句返回一個或多個行,否則它返回false。
  2. % NOTFOUND——這個屬性是相反的%發現屬性,返回true,如果插入、刪除和更新語句不受一個或多個行或如果select into語句返回沒有行,否則它返回false。
  3. % ISOPEN——這對隱式遊標屬性總是返回false,因為Oracle關閉SQL遊標後自動完成相關的SQL語句的執行。
  4. % ROWCOUNT——這返回的行數,影響插入、刪除和更新語句或返回的SELECT INTO語句。

我們可以訪問任何SQL遊標屬性的SQL % attribute_name。

例子:參考表中創建函數部分。從教師SELECT *;聲明total_rows數量(2);開始更新教師設置工資=工資+ 100;如果sql % notfound那麼dbms_output。put_line(“沒有教師選擇”);ELSEIF sql %發現然後total_rows: sql = % rowcount;dbms_output。put_line (total_rows | |“教師選擇”);如果; END; /

輸出:

5教師選擇

PL / SQL過程成功完成。

我們可以檢查行;他們將被更新。

從教師選擇*。

ID

的名字

年齡

地址

工資

1

Ranjitha

34

班加羅爾

2100年

2

30.

海德拉巴

2600年

3

Shakthi

34

浦那

3100年

4

Gayathri

36

班加羅爾

4100年

5

Vignesh

34

孟買

4600年

  1. 顯式遊標——這些遊標programmer-defined遊標獲取控製上下文區域。這些遊標在聲明部分中定義的塊。這是上創建一個select語句,它返回多個行。

語法:

光標cursor_name select_statement;

我們正在與顯式遊標時,包括以下步驟:

  1. 光標應宣布對內存進行初始化。
  2. 光標應該打開分配內存。
  3. 獲取光標來檢索數據。
  4. 然後關閉遊標釋放分配的內存。

聲明遊標:這個定義遊標的名稱和相關的select語句。

光標t_teachers是

從教師選擇id、名稱、地址;

打開遊標:這為指針分配內存,也準備獲取的行。

開放t_teachers;

關閉遊標:這意味著釋放分配的內存。

關閉t_teachers;

獲取光標:這意味著訪問一次一行。

獲取t_teachers t_id, t_name;

例子:

聲明

t_id teachers.id %類型;

t_name teachers.name %類型;

t_addr teachers.address %類型;

光標t_teachers是

從教師選擇id、名稱;

開始開放t_teachers;循環獲取t_teachers t_id, t_name;t_teachers % notfound時退出;dbms_output。put_line (t_id | |的| | t_name | |”);結束循環;關閉t_teachers;結束;/

輸出:

1 ranjitha

兩個賽

3 shakthi

4 gayathri

5 vignesh

PL / SQL過程成功完成。

Baidu
map