Я пытаюсь это сделать, но выдает ошибку
DELIMITER $$
CREATE PROCEDURE usp_dynamicExc1 (Tablename varchar(100)
,Columnname varchar(100),
Data varchar(100) )
BEGIN
SET @Tablename = Tablename;
SET @columnname = Columnname;
SET @value1 = Data;
SET @q= CONCAT('Insert into ',@tablename,' (',@columnname,') values (',@value1,')');
PREPARE stmt FROM @q;
EXECUTE stmt ; DEALLOCATE PREPARE stmt;
END
Я получил эту ошибку
10:30:16 PREPARE stmt FROM @q Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 0.000 sec
Это легко отладить - просто добавьте select '@' q перед подготовкой и закомментируйте подготовку, выполнение и освобождение. Кстати, вам не хватает; после установки @value = data (что, как я полагаю, является ошибкой транскрипции), за конечным оператором должен следовать разделитель, '@' 'query_table и' @ 'newrecord не являются выделенными значениями, поэтому будет null, что приведет к concat возвращает null, и вам не хватает предложения значений в вашем операторе вставки,
Вы можете мне четко сказать?
Уже не ясно.
Я пробовал, но данные не были вставлены
с этим вызовом p ('users', 'id, username', '999, bob'); ваш оператор вставки выглядит так: INSERT INTO users(id,username) (999,bob) - вам это подходит? обратите внимание, что пробелы на этом сайте неверно истолкованы.






Просто создайте параметры в Процедуре для имени таблицы и передайте их во время вызова. Дайте мне знать, если вам непонятно.