mysql儲存過程 在動態SQL內獲取返回值

2021-06-20 00:51:05 字數 902 閱讀 7165

很簡單,不需要使用游標迴圈來讀取,直接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...