本篇主要參考mysql手冊
游標必須在宣告處理程式之前被宣告,並且變數和條件必須在宣告游標或處理程式之前被宣告。
宣告游標
declare cursor_name cursor for select_statement
這個語句宣告乙個游標。也可以在子程式中定義多個游標,但是乙個塊中的每乙個游標必須有唯一的名字。
select語句不能有into子句。
open游標
open cursor_name
這個語句開啟先前宣告的游標。
fetch游標
fetch cursor_name into var_name [, var_name] ...
這個語句用指定的開啟游標讀取下一行(如果有下一行的話),並且前進游標指標。
close游標
close cursor_name
這個語句關閉先前開啟的游標。
如果未被明確地關閉,游標在它被宣告的復合語句的末尾被關閉。
示例:
create procedure curdemo()
begin
declare done int default 0;
declare a char(16);
declare b,c int;
declare cur1 cursor for select id,data from test.t1;
declare cur2 cursor for select i from test.t2;
declare continue handler for sqlstate '02000' set done = 1;
open cur1;
open cur2;
repeat
fetch cur1 into a, b;
fetch cur2 into c;
if not done then
if b < c then
insert into test.t3 values (a,b);
else
insert into test.t3 values (a,c);
end if;
end if;
until done end repeat;
close cur1;
close cur2;
end
儲存過程之游標
游標 指標 1 select。into 注意 into 關鍵字後的變數要求先宣告 只能出現在儲存過程和觸發器,不能單獨使用 字段 數量 型別 要和變數一致 只能針對一行 返回標量值 搜尋的結果集為多條,移動指標 步驟 建立游標 開啟游標 獲取記錄 關閉游標 語法 declare 游標名稱 curso...
mysql儲存過程之游標使用(六)
需求 修改id為偶數的記錄分數 delimiter create procedure test cur 1 begin 定義開關 declare stopflag int default 0 定義資料存放的變數 declare my id varchar 255 default 定義游標變數 dec...
oracle 儲存過程之游標(loop)使用
declare 宣告兩個變數 v id varchar2 50 v int number cursor yb is select a.id from t d5 punishment a where a.removed 0 begin v int 1 變數賦值 open yb 開啟游標 loop 開始...