首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql Insert Insert with variables

Mysql Insert Insert with variables
EN

Stack Overflow用户
提问于 2016-08-30 20:14:23
回答 1查看 43关注 0票数 0

嘿,我想用sql写一个插入切换参数的函数。我的代码:

代码语言:javascript
复制
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。有谁可以帮我?

EN

回答 1

Stack Overflow用户

发布于 2016-08-30 20:18:57

您缺少CONCAT()

代码语言:javascript
复制
set @str = CONCAT('INSERT INTO t_', p_username, '(Purchase, Reach) VALUES (p_purchase, p_reach)');

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

代码语言:javascript
复制
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;

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39227226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档