MySQL параметр хранимой процедуры не работает

0

Я новичок в MySQL, и я пытаюсь портировать некоторые хранимые процедуры из SQL Server. Я создал базовую хранимую процедуру с передачей параметров в MySQL.

Хранимая процедура просто принимает параметр и выполняет "отбрасывание, если существует" на основе предоставленного параметра.

При запуске в MySQL выдает ошибку ниже.

Кажется, что каким-то образом параметр, переданный 'mytablename' в хранимую процедуру, выполняется как часть оператора вместо параметра.

Любой совет?

Оператор SQL:

call mydb.spDroptableifexist('customerdata');

Результаты:

0 row(s) affected, 1 warning(s): 1051 Unknown table 'mydb.mytablename'

Это хранимая процедура:

USE 'mydb';
DROP procedure IF EXISTS 'spDroptableifexist';

DELIMITER $$
USE 'mydb'$$
CREATE DEFINER='root'@'localhost' PROCEDURE 'spDroptableifexist'(IN mytablename VARCHAR(255))
BEGIN
    drop table if exists mytablename;
END$$

DELIMITER ;
Теги:
stored-procedures
parameters

1 ответ

0

Из руководства:

Пользовательские переменные предназначены для предоставления значений данных. Их нельзя использовать непосредственно в операторе SQL в качестве идентификатора или как часть идентификатора, например, в контексте, где ожидается имя таблицы или базы данных

Чтобы использовать переменную в качестве имени таблицы, вам нужно подготовить оператор и выполнить его:

SET @sql = CONCAT('DROP TABLE IF EXISTS ', mytablename);
PREPARE stmt FROM @sql;
EXECUTE stmt;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню