drop procedure test; delimiter ;; CREATE procedure test() -- 取動態sql的值
-- 目前只測試出,在 where 后面, 可以用 ?,類似於 java的 preparestatement寫法,
-- 表名,查詢字段 是否可以也用? 代替,目前沒有測試成功
begin
DECLARE v_sqlcounts varchar(500); DECLARE recordcount varchar(500); set v_sqlcounts = concat('select * from test where id > ?'); set @sqlcounts := v_sqlcounts; #預處理動態SQL set @b=3; prepare stmt from @sqlcounts; #傳遞動態SQL內參數 execute stmt using @b; deallocate prepare stmt; #獲取動態SQL語句返回值 SELECT @b; end ;; delimiter ; call test();