您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何理解MySQL的存儲過程與光標,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
一、存儲過程
T-sql 編程
增 刪 改 查 —》語句
MySQL是一門真正語言 T-sql 類似于函數 function
1.存儲過程:
創建格式:
create procedure 過程名稱(參數1,參數2,…….)
begin
sql代碼
end
begin…and 就相當于以前{ 代碼段 }
預編譯,執行一次(編譯),后邊在使用直接調用編譯結果 ,速度快
create procedure spade()
begin
select * from books;
end
//
mysql默認情況下遇到; 就執行了, ; 執行符號
在存儲過程運行的時候delimiter符號修改執行符號
存儲過程的調用:
call 過程名() //執行一次 (編譯)
2、存儲過程中的參數:
in 傳入參數 把值傳進去
out 傳出參數 返回值
inout 傳入傳出參數 效率低下
in 輸id是幾查找第幾條記錄
create procedure one (in id int)
begin
select * from books where booksId=id;
end
//
call one(3);//
out 參數一個返回值
create procedure two (out spade int)
begin
select count(*) into spade from books;
end
//
注意:在sql 語句中賦值 into
在mysql 過程外邊的變量 需要 @a
call thr(@a)//
select @a //查看變量
注意:
mysql中變量
過程外 @變量名稱
過程內:聲明
declare 變量名稱 數據類型;
查找網站類型的圖書
查找到類型的id
根據類型的id 在到圖書表中 查找到對應的圖書
create procedure toto()
begin
declare btid int;
set btid=(select cid from category where cName=”大事記”);
select * from category where cid=btid;
end
//
3、條件和處理程序
在某些條件下 執行某些程序
declare handler_type handler for conditionValue sq_statement
handler_type 操作類型
continue 繼續
exit 退出
undo 忽略
conditionValue sql 錯誤的編號
02000 不正確的FETCH變量數目
23000 磁盤滿了
sq_statement 執行對應的操作
declare continue handler for sqlstate “02000” set done=1;
當出現02000錯誤時候, 設置 done=1 后邊程序繼續執行
二、光標 抓取數據的
1、聲明光標
declare 光標名稱 cursor for sql語句 (select)
2、打開光標
open 光標名稱
3、從光標中抓取數據
fetch 光表名稱 into
4、關閉光標
close 光標名稱
//抓取 btype中的數據
create procedure sex()
begin
declare id int;
declare name varchar(30);
declare done int default 0;
declare spade cursor for select * from books;
declare continue handler for sqlstate’02000’set done=1;
open spade;
repeat
fetch spade into id,name;
select id;
until done
end repeat;
close spade;
end
//
until false //終止條件不滿足
until true 終止條件滿足
補充:
if 條件 then
執行語句
else if 條件 then
執行語句
else if 條件 then
執行語句
…
else 以上條件都不滿足
end if
mysql存儲過程一般用來提高sql運行效率
php調用存儲過程
create procedure getDate()
begin
select * from btype;
end
刪除存儲過程
drop procedure 過程名;
查看存儲過程
show create procedure 過程名;
看完上述內容,你們對如何理解MySQL的存儲過程與光標有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。