Mysql插入变量

时间:2016-08-30 12:14:23

标签: mysql insert

嘿我想在sql中编写一个插入切换参数的函数。 我的代码:

CREATE PROCEDURE `p_add_client`(IN p_username VARCHAR(45),IN p_reach VARCHAR(45),IN p_purchase VARCHAR(45))
BEGIN
set @str = ('INSERT INTO t_', p_username,'(Purchase,Reach) VALUES (p_purchase,p_reach)');
prepare stmt from @str;
execute stmt;
deallocate prepare stmt;

但它不起作用。我收到错误代码1064.任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您遗失CONCAT()

set @str = CONCAT('INSERT INTO t_', p_username, '(Purchase, Reach) VALUES (p_purchase, p_reach)');

但是,执行时会出现错误,因为变量未知。所以,你可以写:

set @str = CONCAT('INSERT INTO t_', p_username, '(Purchase, Reach) VALUES (p_purchase, p_reach)');

prepare stmt from @str;
execute stmt using p_purchase, p_reach;
deallocate prepare stmt;

当然,这一切都暗示了一个非常糟糕的数据库架构。为什么每个用户都有一个单独的表,而不是所有用户的单个表中的行?这可能是解决实际问题的一些神秘原因,但这种方法更常见地表明解决方案架构存在问题。