1. 程式人生 > >解決 mysql 儲存過程查詢資料方式是變數拼接表名的寫法

解決 mysql 儲存過程查詢資料方式是變數拼接表名的寫法

需求:

用儲存過程查詢動態表名的資料

遇到問題:

查詢語句 from後面不能直接用引數查詢 MYSQL不支援直接使用變數做表名,會把引數名當做表名查詢,報錯

解決方法:

把查詢語句和變數通過concat連線付給變數。通過執行變數來執行此語句


sql程式碼:

delimiter $$

drop procedure if exists productpricing $$     #如果此儲存過程存在就刪除

create procedure productpricing(IN activityCode varchar(20),IN `userId` int,IN `activityId` int)

begin

SET @STMT :=CONCAT("select p.id as longitude , p.visit_id as latitude  from people_",activityCode," as p where p.id = 88 and p.visit_type = 3");   

PREPARE STMT FROM @STMT;   

EXECUTE STMT;   

end;

$$

delimiter ;


執行儲存過程:

CALL productpricing('visit',2,2);

結果顯示: