標籤:
一 遊標的分類
在Oracle中提供了兩種類型的遊標:靜態資料指標和動態資料指標。
1.靜態資料指標是在編譯時間知道其SELECT語句的遊標。靜態資料指標又分為兩種類型,即隱式遊標和顯式遊標。
2.當使用者需要為遊標使用的查詢直到啟動並執行時候才能夠確定時,可以使用REF遊標(引用遊標)和遊標變數。使用引用遊標必須聲明遊標變數。引用遊標又可以分為兩種類型:強型別REF遊標和弱類型REF遊標。
二 遊標的用法
1.顯式遊標的用法
使用顯式遊標的4個步驟:
1>聲明遊標
文法:CURSOR cursor_name [(parameter[,parameter]...)]
[RETURN return_type] IS select_statement;
cursor_name:遊標的名稱。
parameter:用於為遊標指定輸入參數。在指定資料類型時,不能使用長度約束。
return_type:定義遊標提取的行的類型。
select_statement:遊標定義的查詢語句。
2>開啟遊標
文法:OPEN cursor_name[(parameters)];
3>提取遊標
文法:FETCH cursor_name INTO variables;
variables:變數名。
4>關閉遊標
文法:CLOSE cursor_name;
顯式遊標使用舉例:
1 --顯式遊標1 2 DECLARE 3 v_name tb_student.stu_name%TYPE; 4 v_sex tb_student.stu_sex%TYPE; 5 v_email tb_student.stu_email%TYPE; 6 CURSOR cur_stu IS 7 SELECT stu_name,stu_sex,stu_email FROM tb_student; 8 BEGIN 9 --開啟遊標10 OPEN cur_stu;11 LOOP12 FETCH cur_stu INTO v_name,v_sex,v_email;13 EXIT WHEN cur_stu%NOTFOUND;14 dbms_output.put_line(v_name||‘ ‘||v_sex||‘ ‘||v_email);15 END LOOP;16 CLOSE cur_stu;17 END;
2.顯式遊標屬性
1>%FOUND:只有在DML語句影響一行或多行時,%FOUND才返回TRUE。
2>%NOTFOUND:與%FOUND的作用相反。若DML語句沒有影響任何行,則返回TRUE。
3>%ROWCOUNT:返回DML語句影響的行數。若沒有影響任何行,則返回0。
4>%ISOPEN:返回遊標是否已開啟的值。在執行SQL語句之後,Oracle自動關閉SQL遊標,所有隱式遊標的%ISOPEN屬性始終為FALSE。
Oracle---顯式遊標