寒假接觸到了資料庫游標的概念,一直沒有實現。昨日回頭看了一下,今早給實現了。
declare cursor_name cursor for select_statement這個語句宣告乙個游標。也可以在子程式中定義多個游標,但是乙個塊中的每乙個游標必須有唯一的名字。宣告游標後也是單條操作的,但是不能用select語句不能有into子句。
b.游標open語句
open cursor_name這個語句開啟先前宣告的游標。
c.游標fetch語句
fetch cursor_name into var_name [, var_name] …這個語句用指定的開啟游標讀取下一行(如果有下一行的話),並且前進游標指標。
d.游標close語句
close cursor_name這個語句關閉先前開啟的游標。
1.建立測試資料庫、資料表
create
table
`users` (
`id` bigint(20) unsigned not
null auto_increment,
`user_name`
varchar(60) not
null
default
'',
`user_pass`
varchar(64) not
null
default
'',
primary
key (`id`)
) engine=innodb auto_increment=1
default charset=utf8
2.建立游標將該內容存於乙個.sql檔案中,比如我將該內容存到了mycursortest.sql檔案中。
use test; /*選擇使用已經建立好的資料庫test*/
delimiter | /*使用delimiter告訴資料庫該處需要多條sql命令解析*/
create
procedure test_cursor (in param int(10),out result varchar(90)) /*建立儲存過程*/
begin /*開始*/
declare name varchar(20);
/*宣告變數*/
declare pass varchar(20);
declare done int;
declare cur_test cursor for select user_name,user_pass from users;
/*宣告游標*/
declare continue handler
forsqlstate
'02000'
set done = 1;
if param then /*開始迴圈呼叫*/
select concat_ws(',',user_name,user_pass) into result from test.users where id=param;
else
open cur_test;
repeat
fetch cur_test into name, pass;
select concat_ws(',',result,name,pass) into result;
until done end repeat;
close cur_test;
endif;/*結束迴圈*/
end;
|/*終結*/
3.呼叫游標a.在該mycursortest.sql檔案所在的目錄下使用命令使檔案生效;
mysql -u root -p < mycursortest.sqlb.呼叫游標;
call test_cursor(10,@test);/注意引數/c.顯示游標取到的結果集。
select @test;4.刪除游標使用命令刪除游標:
drop procedure test_cursor;1.建立測試游標
2.呼叫游標及結果
資料庫游標
資料庫之 游標 轉貼 在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句 往往使用select insert 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。1.游標和游標的優點 在資料庫中,游標...
資料庫游標
資料庫游標 2007 10 10 15 40 游標提供了一種對從表中檢索出的資料進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制。游標總是與一條t sql 選擇語句相關聯因為游標由結果集 可以是零條 一條或由相關的選擇語句檢索出的多條記錄 和結果集...
資料庫游標
1.為何使用游標 使用游標 cursor 的乙個主要的原因就是把集合操作轉換成單個記錄處理方式。用sql語言從資料庫中檢索資料後,結果放在記憶體的一塊區域中,且結果往往是乙個含有多個記錄的集合。游標機制允許使用者在sql server內逐行地訪問這些記錄,按照使用者自己的意願來顯示和處理這些記錄。2...