MySQL存储过程在调用时抛出错误

时间:2013-04-02 21:06:14

标签: mysql database stored-procedures

当我创建这个存储过程时,我没有得到任何错误,并且它被创建得很好。

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');

1 个答案:

答案 0 :(得分:0)

原来是因为我这样做了:

END

而不是:

END $$
DELIMITER ;