0

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

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

1 回答 1

0

原来是因为我这样做了:

END

而不是:

END $$
DELIMITER ;
于 2013-04-03T13:23:38.263 回答