這篇文章中將演示如何在Oracle / PLSQL中聲明游標的語法和示例。
游標是在PLSQL代碼的聲明部分中定義的SELECT
語句。下麵來看看三種不同的語法來聲明游標。
1. 沒有參數的游標(最簡單)
在沒有任何參數的情況下聲明游標是最簡單的游標。
語法
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子句的游標
最後,可以用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
的科目是數學的所有列。