Я пытаюсь выполнить эту команду своим приложением (C# winapp), но он должен показать ошибку, как параметр «@sqlstmt», должен быть определен, но я пытаюсь выполнить эту команду с помощью navicat, чтобы он работал хорошо, пожалуйста, помогите мнеC# Неустранимая ошибка, возникающая во время выполнения команды
"DELIMITER $$" +
" DROP PROCEDURE IF EXISTS " + txtDB.Text + ".`index_startTime` $$" +
" CREATE PROCEDURE " + txtDB.Text + ".`index_startTime`" +
" (" +
" given_database VARCHAR(64)," +
" given_table VARCHAR(64)," +
" given_index VARCHAR(64)," +
" given_columns VARCHAR(64)" +
")" +
" BEGIN" +
" DECLARE IndexIsThere INTEGER;" +
" SELECT COUNT(1) INTO IndexIsThere" +
" FROM INFORMATION_SCHEMA.STATISTICS" +
" WHERE table_schema = given_database" +
" AND table_name = given_table" +
" AND index_name = given_index;" +
" IF IndexIsThere = 0 THEN" +
" SET @sqlstmt = CONCAT('CREATE INDEX ',given_index,' ON '," +
" given_database,'.',given_table,' (',given_columns,')');" +
" PREPARE st FROM @sqlstmt;" +
" EXECUTE st;" +
" DEALLOCATE PREPARE st;"+
" ELSE" +
" SELECT CONCAT('Index ',given_index,' already exists on Table ',"+
" given_database,'.',given_table) CreateindexErrorMessage; "+
" END IF;"+
" END $$" +
" DELIMITER ;";
Все это должно быть * стенографическим строковым литералом * ('@'), так что вам не нужно программировать таким образом. Конкат может случиться или другое творчество для замены переменных. – Drew
Возможно, он не нуждается в ограничительной оболочке. Я мог бы проверить его – Drew