解決 mysql 儲存過程查詢資料方式是變數拼接表名的寫法
阿新 • • 發佈:2019-02-09
需求:
用儲存過程查詢動態表名的資料
遇到問題:
查詢語句 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);
結果顯示: