- 表名或者表分区名作为变量
- 正确的写法
当编写存储过程时,遇到表分区名需要通过变量传入,如遇到需要定时清理分区表的数据时,每次需要清理的表分区名字都是通过与当前时间计算得出的,那如果在存储过程的sql 直接使用变量传入,sql是无法识别的,直接报错。
例如:
set partName = P2101; insert into hisTableName select * from currentTableName PARTITION(partName);
上面sql ,表分区名是变量,sql是无法识别,直接报错的。
又例如,当表名是变量时,也是无法识别的。
set currentTableName = t_trans_log; insert into hisTableName select * from currentTableName ;正确的写法
需要通过 concat 来拼接sql和变量,然后通过PREPARE stmt2 from @sqlStmt2;然后执行sql.
应是如下图:
set @sqlStmt3 = CONCAT("alter table ", currentTableName, " TRUNCATE1 PARTITION ",partName ,";") ;
PREPARE stmt2 from @sqlStmt2;
EXECUTE stmt2;



