mysql儲存過程之游標篇

2021-08-30 17:12:07 字數 1265 閱讀 8051

本篇主要參考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 開始...