我正在编写一个存储过程,其中我使用动态变量来定义一个SQL块。然后,我从动态变量创建一个准备好的语句并执行它。
当我的SQL获取超过255个字符时,它会被截断(大概是一个限制动态变量)。
set @NEW_CAMPAIGN_SQL = concat(
'CREATE TABLE `', CAMPAIGN_TABLE, '` (',
'`id` bigint(20) unsigned NOT NULL auto_increment,',
'`code` char(', _CODE_LEN, ') NOT NULL default \'\',',
'`status` tinyint(1) unsigned NOT NULL default 1,',
'PRIMARY KEY (`id`),',
'KEY `code_idx` (`code`),',
'KEY `status_idx` (`status`)',
') ENGINE=InnoDB DEFAULT CHARSET=latin1'
);
PREPARE NEW_CAMPAIGN_STMT FROM @NEW_CAMPAIGN_SQL;
EXECUTE NEW_CAMPAIGN_STMT;
Deallocate prepare NEW_CAMPAIGN_STMT;我试着将NEW_CAMPAIGN_SQL声明为非动态变量,但是准备好的语句失败。
任何建议,将不胜感激。