微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从准备好的语句中获取结果到变量中

如何解决从准备好的语句中获取结果到变量中

我一直在尝试将准备好的语句的结果转换为变量。我环顾四周,找到了我想要做的事情,但是我不确定如何正确实现它。这是我尝试过的方法,但是当我运行它时,它会在表格中插入空白。

Drop procedure if exists campaignTEST;

DELIMITER  $$

Create procedure campaignTEST(in userID smallint)
sp_Campaign17:BEGIN

Declare activityCount mediumint;
Declare lastActivityDate DateTime;

Declare TableName varchar(64);

SET TableName = 'user_activity_';  
SET TableName = concat(TableName,convert(userID,char(64)));

SET @lastActivityDateTest = ('SELECT @date := date from ',TableName,' order by date desc limit 1;');  
    PREPARE stmt FROM @lastActivityDateTest;  
    EXECUTE stmt;  
    Select @date AS lastActivityDate;  
    DEALLOCATE PREPARE stmt;

SET @activityCountTest = ('Select @count := count(*) from ',' where Month(date) > Month(Date_SUB(CURRENT_date,Interval 1 month));');  
    PREPARE stmt FROM @activityCountTest;   
    EXECUTE stmt;  
    select @count as activityCount;
    DEALLOCATE PREPARE stmt;

INSERT INTO email_tracker
(activity_date,allocated)
Values
(lastActivityDate,activityCount)

END$$

DELIMITER ;

解决方法

在朋友的帮助下,我设法让它运行起来。

这些声明,

SET @lastActivityDateTest = ('SELECT @date := date from ',TableName,' order by date desc limit 1;');  
    PREPARE stmt FROM @lastActivityDateTest;  
    EXECUTE stmt;  
    Select @date AS lastActivityDate;  
    DEALLOCATE PREPARE stmt;

SET @activityCountTest = ('Select @count := count(*) from ',' where Month(date) > Month(Date_SUB(CURRENT_date,Interval 1 month));');  
    PREPARE stmt FROM @activityCountTest;   
    EXECUTE stmt;  
    select @count as activityCount;
    DEALLOCATE PREPARE stmt;

INSERT INTO email_tracker
(activity_date,allocated)
Values
(lastActivityDate,activityCount)

应该是这个

SET @statement = CONCAT('SELECT date into @result from ',' ORDER BY date DESC LIMIT 1');
PREPARE stmt FROM @statement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SET @statement = CONCAT('SELECT count(*) into @result2 from ',Interval 1 month));');
PREPARE stmt FROM @statement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

INSERT INTO email_tracker
(activity_date,allocated)
Values
(@result,@result2)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。