mysql - 在 MySQL 存储过程中使用选择

标签 mysql stored-procedures

我的数据库中有存储过程,我需要查找一个表并交叉引用一个ID,然后使用返回的行我需要将信息插入到另一个表中,但我似乎无法使用查找到的信息插入物。这就是我所拥有的..

BEGIN
#Routine body goes here...
SET @UID = uid;
SET @UIDTOFB = uid_to;

SET @SQLTEST = CONCAT('SELECT users.user_auto_id FROM users WHERE users.user_fb_uid=     @UIDTOFB LIMIT 1');
PREPARE sqlcmd from @SQLTEST;
EXECUTE sqlcmd;

INSERT INTO challenges(challenge_from_uid, challenge_to_uid, challenge_dateadded) VALUES(@UID, @SQLTEST.users.user_auto_id, now());

SET @LASTID = LAST_INSERT_ID();
SELECT @LASTID as id;

END

任何帮助将不胜感激!

最佳答案

这不会插入 @UIDTOFB 的值,因为您错过了一些 '。它将整个语句视为一个字符串,因此该语句失败。

SET @SQLTEST = CONCAT('SELECT users.user_auto_id FROM users WHERE users.user_fb_uid=     @UIDTOFB LIMIT 1');
PREPARE sqlcmd from @SQLTEST;
EXECUTE sqlcmd;

无论如何,我建议您使用这样的参数:

PREPARE sqlcmd from 'SELECT users.user_auto_id FROM users WHERE users.user_fb_uid= ? LIMIT 1';
EXECUTE sqlcmd USING @UIDTOFB;

您可以阅读更多相关信息here in the manual .

更新:现在我明白了,你想做什么。简单地这样做:

SELECT @anyVariable:=users.user_auto_id FROM users WHERE users.user_fb_uid= @UIDTOFB LIMIT 1;
INSERT INTO challenges(challenge_from_uid, challenge_to_uid, challenge_dateadded) VALUES(@UID, @anyVariable, now());

关于mysql - 在 MySQL 存储过程中使用选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11029301/

相关文章:

mysql - Docker 容器未针对 Spring Boot 应用程序运行

MySQL 分组依据包括空行

php - 在 sp 中多次插入

sql - 从多个表中进行选择的存储过程

java - 使用SQL存储过程我们可以得到以下输出吗?或者在代码本身中处理它?

MySQL 过程检查记录是否在插入不工作之前存在

python - 异常。类型错误 : 'str' object is not callable

php - 带有斯堪的纳维亚字母的 URL 段

MySQL根据字段使用另一个表中的数据更新表

php - 除了作为 'dumb' 数据存储之外,将 MySQL 用于任何其他用途有什么好处吗?