mysql預處理語句提取變量,實現動態執行SQL語句

爲了項目在長期使用過程中,數據庫仍能夠保持較好的性能,考慮將數據庫表分爲當前表和歷史表。當前錶針對不同客戶,分別存儲在不同的表中。因爲需要在mysql的存儲過程中實現動態的指向不同的表進行操作。

首先,mysql的預處理語句如果帶參數,每次只能執行一個語句。帶參數的寫法是下面的樣子。注意,這裏有一個select變量的語句。可以方便地將預處理語句執行結果放入變量中,爲後繼判斷提供條件。

SET _sql=CONCAT('SELECT 1,PackLayer INTO  @num,@packlayer FROM  CODE_',_CompanyId,' WHERE  PackCode=?  AND  CompanyId=?');
  SET @PackCode=_PackCode;
  SET @CompanyId=_CompanyId;

  SET @sql=_sql;
  PREPARE sentence FROM @sql;
  EXECUTE sentence  USING @PackCode, @CompanyId ;
  DEALLOCATE PREPARE sentence;
#SELECT @num,@packlayer,@isactive;

後繼的條件判斷與上類似,不同的地方是如果是多條語句,不能帶參數,否則會報執行錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章