嘿,我想用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。有谁可以帮我?
发布于 2016-08-30 20:18:57
您缺少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;当然,这一切都暗示了一个相当糟糕的数据库架构。为什么每个用户都有一个单独的表,而不是所有用户在一个表中都有行?这可能是一个实际问题的解决方案,这有一些神秘的原因,但这种方法更常见地表明解决方案架构存在问题。
https://stackoverflow.com/questions/39227226
复制相似问题