这个 SQL 语句有什么问题?

mma*_*mad 2 mysql

我无法在 MySQL 服务器上运行此语句:

DECLARE @tabl varchar(40)
SET @tabl = :uId;
SET @location = CONCAT('data_',@tabl);
SET @b = 'INSERT INTO' + @location + '(Id, uId , name , address, phone)
VALUES (:Id, :uId, :name, :address)';
Prepare stmt FROM @b;
Execute stmt;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

没有为参数 1 指定值 - SQLException

绑定将在另一个函数中完成。

我该如何解决?

And*_*y M 6

我不确定你的意思

绑定将在另一个函数中完成。

您有一个 EXECUTE 语句,它将立即调用您的查询,并且该语句不为您的:name参数提供参数值。这就是错误消息的内容。

根据手册,您的 EXECUTE 语句必须有一个 USING 子句:

EXECUTE stmt
USING @Id, @uId, @name, @address;
Run Code Online (Sandbox Code Playgroud)

其中@Id@uId@name@address可能是包含问题中脚本的存储程序的参数名称。

然后您还需要解决Julien Vavasseurypercube提到的问题

  • 重新审视 INSERT 语句中值的数量与列的数量(并在必要时更正上面的 USING 子句);
  • 确保你的 INSERT 语句在语法上是正确的(在需要的地方,它的各种标记之间没有缺少空格)。