PL/SQL光標為程序提供了從數據庫中選擇多行數據
然後對每行數據單獨進行處理的方法
它為Oracle提供了一種指示和控制SQL處理的各個階段的方法
我將認為您已經對PL/SQL有一定的了解
通過本文
您將學會
1)光標的創建 2)光標的處理 3)定義和使用光標屬性
一 什麼是光標
Oracle使用兩種光標顯式光標和隱式光標不管語句返回多少條紀錄PL/SQL為使用的每一條UPDATEDELETE和INSERT等SQL命令隱式的聲明一個光標(要管理SQL語句的處理必須隱式的給它定義一個光標)用戶聲明並使用顯示光標處理SELECT語句返回的多條記錄顯示的定義光標一種結構它使用戶能夠為特定的語句指定內存區域以便以後使用
二 光標的作用
當PL/SQL光標查詢返回多行數據時這些記錄組被稱為活動集Oracle將這種活動集存儲在您創建的顯示定義的已命名的光標中Oracle光標是一種用於輕松的處理多行數據的機制沒有光標Oracle開發人員必須單獨地顯式地取回並管理光標查詢選擇的每一條記錄
光標的另一項功能是它包含一個跟蹤當前訪問記錄的指針這使您的程序能夠一次處理多條記錄
三 使用顯示光標的基本方法
步驟如下
聲明光標
聲明光標的語法如下
DECLARE cursor_name
Is
SELECT statement
其中cursor_name是您給光標指定的名稱SELECT statement是給光標活動集返回記錄的查詢
聲明光標完成了下面兩個目的1)給光標命名2)將一個查詢與光標關聯起來
值得注意的是必須在PL/SQL塊的聲明部分聲明光標給光標指定的名稱是一個未聲明的標識符而不是一個PL/SQL變量不能給光標名稱賦值也不能將它用在表達式中PL/SQL塊使用這個名稱來引用光標查詢
例
DECLARE
CURSOR c
Is
SELECT VIEW_NAME FROM ALL_VIEWS
WHERE ROWNUM<=
另外還可以在光標定義語句中聲明光標的參數例
CURSOR c(view _nbr number)
Is
SELECT VIEW_NAME FROM ALL_VIEWS
WHERE ROWNUM<= view _nbr
光標參數只對相應的光標是可見的不能在光標范圍之外引用該光標的參數如果試圖這樣做Oracle將返回一個錯誤指出該變量沒有定義
[] [] []
From:http://tw.wingwit.com/Article/program/SQL/201311/16420.html