我在寫一個存儲過程,其中我使用動態變量來定義一個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