mysql的游標使用筆記

2022-09-02 13:30:10 字數 1389 閱讀 2623

可以用在儲存過程的sql語句主要有以下型別:

1、 無返回結果語句,如:insert,update,drop, delete等

2、 select語句返回單行變數並可傳給本地變數(select ..into)

3、 返回多行結果集的select語句,並可使用游標迴圈處理

注意,儲存過程返回的多行結果集,可以被客戶端程式(如php)所接收,但要在乙個儲存過程中接收另乙個儲存過程的結果集是不可能的,一般解決辦法是存入臨時表供其它過程共用

4、 prepare語句

以下主要講述游標及prepare部分

游標

定義declare cursor_name cursor for select_statement;

游標操作

open開啟游標

open cursor_name;

fetch獲取游標當前指標的記錄,並傳給指定變數列表,注意變數數必須與游標返回的字段數一致,要獲得多行資料,使用迴圈語句去執行fetch

fetch cursor_name into variable list;

close關閉游標

close cursor_name ;

注意:mysql的游標是向前唯讀的,也就是說,你只能順序地從開始往後讀取結果集,不能從後往前,也不能直接跳到中間的記錄.

乙個完整的例子:

-- 定義本地變數

declare o varchar(128);

-- 定義游標

declare ordernumbers cursor

forselect callee_name from account_tbl where acct_timeduration=10800;

declare continue handler for not found set no_more_departments=1;

set no_more_departments=0;

-- 開啟游標

open ordernumbers;

-- 迴圈所有的行

repeat

-- get order number

fetch ordernumbers into o;

update account set allmoney=allmoney+72,lastmonthconsume=lastmonthconsume-72 where numtg=@o;

-- 迴圈結束

until no_more_departments

end repeat;

-- 關閉游標

close ordernumbers;

動態游標使用筆記

start 動態游標宣告 type my type cursor is ref cursor cur sql my type cursor str sql cursor varchar2 4000 陣列宣告 用於存放游標中的rowid欄位 type my type table rowid is ta...

游標的使用筆記

use sample db create table fruits f id int identity 1,1 primary key,水果id s id int not null,商id f name varchar 255 not null,水果名稱 f price decimal 8,2 no...

mysql使用筆記

mysql安裝 bin mysqld initialize insecure user mysql basedir usr local mysql datadir usr local mysql data mkdir p var run mysqld chown mysql mysql var ru...