我的数据库中有存储过程,我需要查找一个表并交叉引用一个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/