爲了項目在長期使用過程中,數據庫仍能夠保持較好的性能,考慮將數據庫表分爲當前表和歷史表。當前錶針對不同客戶,分別存儲在不同的表中。因爲需要在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;
後繼的條件判斷與上類似,不同的地方是如果是多條語句,不能帶參數,否則會報執行錯誤。