這篇文章中將演示如何在Oracle / PLSQL中宣告游標的語法和範例。
游標是在PLSQL程式碼的宣告部分中定義的SELECT
語句。下面來看看三種不同的語法來宣告游標。
在沒有任何引數的情況下宣告游標是最簡單的游標。
語法
Oracle / PLSQL中沒有引數的游標的語法是:
CURSOR cursor_name
IS
SELECT_statement;
範例
例如,可以像下面那樣定義一個名為c1
的游標。
CURSOR c1
IS
SELECT course_number
FROM courses_tbl
WHERE course_name = name_in;
該游標的結果集是所有course_name
,其course_name
與name_in
變數匹配。
下面是使用這個游標的函式。
CREATE OR REPLACE Function FindCourse
( name_in IN varchar2 )
RETURN number
IS
cnumber number;
CURSOR c1
IS
SELECT course_number
FROM courses_tbl
WHERE course_name = name_in;
BEGIN
OPEN c1;
FETCH c1 INTO cnumber;
if c1%notfound then
cnumber := 9999;
end if;
CLOSE c1;
RETURN cnumber;
END;
下面來看更加複雜一點的應用,使用引數宣告游標。
語法
Oracle/PLSQL中具有引數的游標的語法是:
CURSOR cursor_name (parameter_list)
IS
SELECT_statement;
範例
例如,可以定義一個名為c2
的游標,如下所示。
CURSOR c2 (subject_id_in IN varchar2)
IS
SELECT course_number
FROM courses_tbl
WHERE subject_id = subject_id_in;
該游標的結果集是所有course_numbers
,其subject_id
與通過引數傳遞給游標的subject_id
相匹配。
最後,可以用return
子句宣告一個游標。
語法
Oracle / PLSQL中帶有return
子句的游標的語法是:
CURSOR cursor_name
RETURN field%ROWTYPE
IS
SELECT_statement;
範例
例如,可以像下面那樣定義一個名為c3
的游標。
CURSOR c3
RETURN courses_tbl%ROWTYPE
IS
SELECT *
FROM courses_tbl
WHERE subject = 'Mathematics';
這個游標的結果集是來自course_tbl
的科目是數學的所有列。