我在写一个存储过程,其中我使用动态变量来定义一个SQL块。然后,我从动态变量创建一个准备好的语句并执行它。MySQL动态变量被截断
当我的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作为非动态可变的,但随后准备好的声明失败。
任何建议,将不胜感激。
我无法重现错误。你能复制粘贴你正在收到的Mysql错误吗? – srivani
是的,这是我自己的错(见下面的答案)。谢谢你的帮助! – jckdnk111