-- 建立儲存過程之前需判斷該儲存過程是否已存在,若存在則刪除
drop procedure if exists init_reporturl;
-- 建立儲存過程
create procedure init_reporturl()
begin
-- 定義變數
declare s int default 0
; declare report_id varchar
(255);
declare report_url varchar
(256);
-- 定義游標,並將sql結果集賦值到游標中
declare report cursor for select reportid,reporturl from patrolreporthistory;
-- 宣告當游標遍歷完後將標誌變數置成某個值
declare continue handler for not found set s=1;
-- 開啟游標
open report;
-- 將游標中的值賦值給變數,注意:變數名不要和返回的列名同名,變數順序要和sql結果列的順序一致
fetch report into report_id,report_url;
-- 當s不等於1,也就是未遍歷完時,會一直迴圈
while s<
>1do
-- 執行業務邏輯
update patrolreporthistory set reporturl =
concat
('patrolreport.html?monitorid='
,substring
(report_url,15,
1),'&reportid='
,report_id) where reportid=report_id;
-- 將游標中的值再賦值給變數,供下次迴圈使用
fetch report into report_id,report_url;
-- 當s等於1時表明遍歷以完成,退出迴圈
end while
;-- 關閉游標
close report;
end;
-- 執行儲存過程
call init_reporturl
()
mysql用儲存過程迴圈遍歷操作結果集
最近有個需求,要批量建立一批資料,但要以另一張表篩選出的結果集作為條件,邏輯很簡單,只是需要用到儲存過程,之前都沒用過,所以寫篇文章記錄下,下面的 可以作為示例。建立儲存過程之前需判斷該儲存過程是否已存在,若存在則刪除 drop procedure if exists init template 將...
利用mysql游標迴圈結果集
很多時候自己新增測試資料會用到mysql程式設計,其中儲存過程就非常的重要,所以在這裡寫乙個返回使用者id號用逗號拼接的例子 現在發現mysql完全可以程式設計,一門徹底的程式語言,資料型別還是強型別的,我喜歡 use test delimiter create procedure pro8 out...
mysql 結果集 MySQL結果集處理
問題 1.mysql對查詢的結果集如果返回,一次性還是每條?2.客戶端如何接收結果集?1.對於有返回結果集的查詢,server端和client端互動的資料報由以下組成 p1 meta data packet p2 rows packet pn 1 rows packet pn eof or erro...