很簡單,不需要使用游標迴圈來讀取,直接select * into @變數就ok了,還可以傳遞引數來執行。
sql**
#拼接查詢總記錄的sql語句
set v_sqlcounts = concat('select count(*) into @recordcount from ',v_tables,v_where);
set @sqlcounts := v_sqlcounts;
#預處理動態sql
prepare stmt from @sqlcounts;
#傳遞動態sql內引數
set @s1= categoryid;
execute stmt using @s1;
deallocate
prepare stmt;
#獲取動態sql語句返回值
set recordcount = @recordcount;
以上我上再做儲存過程分頁裡用到動態sql裡將查詢到的count記錄條數通過變數@recordcount放到recordcount裡面了。
mysql的if else和其他資料庫的判斷有點不一樣,簡單的判斷語句如下。
sql**
#根據總記錄跳數計算出總頁數
set pagecount = ceiling((recordcount+0.0)/pagesize);
if pageindex <1 then
set pageindex = 1;
elseif pageindex > pagecount then
set pageindex = pagecount;
else
select pageindex,pagecount;
end if;
MySQL 儲存過程動態執行 sql
儲存過程名和引數,引數中in表示傳入引數,out標示傳出引數,inout表示傳入傳出引數 create procedure p procedurecode in sumdate varchar 10 begin declare v sql varchar 500 需要執行的sql語句 declare...
寫MySQL儲存過程實現動態執行SQL
儲存過程名和引數,引數中in表示傳入引數,out標示傳出引數,inout表示傳入傳出引數 create procedure p procedurecode in sumdate varchar 10 begin declare v sql varchar 500 需要執行的sql語句 declare...
寫MySQL儲存過程實現動態執行SQL
儲存過程名和引數,引數中in表示傳入引數,out標示傳出引數,inout表示傳入傳出引數 create procedure p procedurecode in sumdate varchar 10 begin declare v sql varchar 500 需要執行的sql語句 declare...