当我创建这个存储过程时,我没有得到任何错误,并且它被创建得很好。
DELIMITER $$
CREATE DEFINER=`portaluser`@`%` PROCEDURE `sp_CreateDatabaseAndTablesByIdAndName`(
IN p_vendorId VARCHAR(256),
IN p_name VARCHAR(256)
)
BEGIN
SET @db_create = CONCAT('CREATE DATABASE IF NOT EXISTS xx_client_', p_vendorId, '_', p_name);
PREPARE stmt FROM @db_create;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
当我调用此存储过程时,它会创建数据库,但会发出警告:1295准备好的语句协议中不支持此命令。
CALL sp_CreateDatabaseAndTablesByVidAndName('11111', 'xx');
我似乎无法在网上任何地方找到告诉我为什么这会引发错误,看起来好像这是一个相当简单的查询。我见过其他人基本上做同样的事情没有任何问题。我需要第二眼来告诉我哪里出错了。任何帮助表示赞赏。
**注意:我之前已将p_VendorId更改为INT(11)并按以下方式调用它,但仍然出现相同的错误:
CALL sp_CreateDatabaseAndTablesByVidAndName(11111, 'xx');
答案 0 :(得分:0)
原来是因为我这样做了:
END
而不是:
END $$
DELIMITER ;