到目前为止,这是我尝试过的两件事,以及它们的错误消息:
DELIMITER //
CREATE PROCEDURE createModifiedIndex(t varchar(256))
BEGIN
declare idx varchar(256);
DECLARE i int;
declare makeIndexSql varchar(256);
set idx = concat('idx_', t, '_modified_on');
set i = (select count(*) from INFORMATION_SCHEMA.STATISTICS where table_name = t and index_name = idx);
if i > 0 then
set makeIndexSql = concat('create index ', idx, ' on ', t, ' (modified_on);');
prepare stmt from makeIndexSql;
execute stmt;
end if;
END //
DELIMITER ;
call createModifiedIndex ('ACHDebitFrequencies');
call createModifiedIndex ...
第 5 行的 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'makeIndexSql; 附近使用正确的语法;执行stmt;万一; END' 在第 10 行
这是另一种不同的尝试,但不会起作用,因为 MySQL 不允许在存储过程之外使用 IF/THEN。
set @i = (select count(*) from INFORMATION_SCHEMA.STATISTICS where table_name = 'ACHDebitFrequencies' and index_name = 'idx_ACHDebitFrequencies_modified_on');
if @i > 0 then begin
create index 'idx_ACHDebitFrequencies_modified_on' on ACHDebitFrequencies (modified_on);
end;
end if;
...
第 3 行的 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'if @i > 0 then begin create index 'idx_ACHDebitFrequencies_modified_on' on ACHD' 附近使用正确的语法
版本 mysql-5.1.62-r1